try/catch and mutithreading

Ignasi Villagrasa gri@netcom.es
Thu Dec 19 11:02:00 GMT 2002


Hi everyone,

I've got a problem migrating several C++ based server applications from 
Watcom 10.5 compiler to cygwin. The problem arises when diferent threads 
get into a try/catch block concurrently. Then cygwin forces me to 
include a semaphore out of try block to solve a concurrency conflict 
that I didn't have using Watcom 10.5, or I don't have now only avoiding 
the try/catch structure.

Source code

void A()
{

MySemaphore.Request();

try
{




}
catch(...)
{


}
catch(...)
{


}

MySemaphore.Release() ;

return;
}

works properly in multithreading, but

void A()
{


try
{
MySemaphore.Request();



}
catch(...)
{


}
catch(...)
{


}

MySemaphore.Release() ;

return;
}

gives me a concurrent problem.

Obviously without semaphores I get a concurrency error also.

I use here the semaphore in order to investigate where in the code the 
problem arises. Normally I cannot use it because of performance problem.


Here is Cygwin version I'm using:

cygwin  1.3.12-2
gcc                 2.95.3-5
gcc-mingw           3_1-20020516-1


I don't use pthreads emulation in order to maintain compatibility to 
previos versions. So I'm using for multithreading _beginthreadex familly 
funtions, the same that work using Watcom.

Could anyone give me a hint ?

Thanks in advance, Ignasi Villagrasa. GRI S.L.






--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list