This is the mail archive of the
cygwin@sources.redhat.com
mailing list for the Cygwin project.
Exception problems
- To: "Cygwin at Sourceware dot Cygnus. Com (E-mail)" <cygwin at sourceware dot cygnus dot com>
- Subject: Exception problems
- From: Joost Kraaijeveld <J dot Kraaijeveld at Askesis dot nl>
- Date: Tue, 28 Nov 2000 10:24:20 +0100
Why does the program below crash if I run runFunction2()? Is it not possible
/ against standards to use exceptions in extern "C" functions?
Joost Kraaijeveld
Askesis B.V.
Molukkenstraat 14
6524NB Nijmegen
tel: 024-3888063 / 06-51855277
fax: 024-3608416
email: J.Kraaijeveld@Askesis.nl
web: www.askesis.nl
////////////////////////////////// Source
/////////////////////////////////////
#include <cstdio>
#include <windows.h>
extern "C" unsigned long WINAPI runFunction1(void* aAThreadFunction)
{
for ( unsigned long i = 0;i<5;i++)
{
printf("%lu\n",i);
Sleep(200);
}
return 0;
}
extern "C" unsigned long WINAPI runFunction2(void* aAThreadFunction)
{
try
{
for ( unsigned long i = 0;i<5;i++)
{
printf("%lu\n",i);
Sleep(200);
}
}
catch(...)
{
}
return 0;
}
int main(int argc, char* argv[])
{
LPTHREAD_START_ROUTINE threadFunction;
// any number and value of arguments will do to run runFunction2()
if(argc == 1)
{
threadFunction = runFunction1;
}else
{
threadFunction = runFunction2;
}
HANDLE threadHandles[2];
unsigned long threadIds[2];
// Create two threads
threadHandles[0] = CreateThread(
NULL,0,threadFunction,NULL,0,&threadIds[0]);
threadHandles[1] = CreateThread(
NULL,0,threadFunction,NULL,0,&threadIds[1]);
// Wait for the threads to end
WaitForMultipleObjects(2,&threadHandles[0],true,INFINITE);
}
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com