Click to See Complete Forum and Search --> : assignment of value by thread problem


CrazyPlaya
March 25th, 2010, 02:43 AM
Hi @ all,

In a thread I´m receiving messages from socket.
If a specific message is income I´m setting a boolean to true.
In a method of my main process I have an endless loop which
has to end if the variable in thread is set to true.

The problem is it needs about 4 to 5 seconds from setting the value to true and
that the method will notice it.

What can I do that the method ends immediatly if the needed message is coming in?

Best regards
CrazyPlaya

P.S.: I forget to say the application is running as a service in Windows.

hoxsiew
March 25th, 2010, 07:45 AM
Hard to say without seeing any code. You're probably not polling the variable often enough, or are blocked by some other operation in your loop.

CrazyPlaya
March 25th, 2010, 08:05 AM
here a snippet of my code


while(running)
{
//mutex is just a class which used Critcal Sections.
mutex->start();
nRf = recvfrom(mysocket, buffer, ...);
if(nRf > 0)
{
if(strMsg.compare(buffer) == 0)
{
m_bEnding = true;
}
}
mutex->end();

}


It seems that the variable is blocked for this time.
How can I do it out of blocking?

sunnypalsingh
April 11th, 2010, 07:19 AM
It seems that the variable is blocked for this time.
How can I do it out of blocking?


Try using select (http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?select+2)call. select() gives you the power to monitor several sockets at the same time. It'll tell you which ones are ready for reading, which are ready for writing, and which sockets have raised exceptions, if you really want to know that.