This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

try/catch and mutithreading


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]