Author: Sune Fischer
Date: 14:50:44 03/08/02
Go up one level in this thread
On March 08, 2002 at 17:31:45, Miguel A. Ballicora wrote: >On March 08, 2002 at 15:58:50, Sune Fischer wrote: > >>On March 08, 2002 at 15:15:34, Miguel A. Ballicora wrote: >> >>I have a related question about this polling thing. >> >>How does one exit the searching thread cleanly when the polling thread finds a >>command, like a move from the opponent that requires the search to stop? >>I don't know a whole lot about threads, but is it possible to kill the thread >>cleanly, so will it clean up all the garbage of memory allocations done in the >>search? > >The input thread can set a global variable that the search thread checks >once in a while. For instance, the searching thread has to check is time >is up, so at the same time can check if the global variable was set. Then, the >searching thread will terminate gracefully as if the time was up. Meantime, >the input thread has to wait for the search thread to terminate >(WaitForSingleObject). This global variable has to be volatile. > Yes I understand about the global falg and all, but how do you terminate gracefully? Is there a killthread() that does this? >That's how I do it, I have an input thread that launches the search thread. >Then, it controls it with global variables. I need very few. >In this way, I use only two multithreading functions: _beginthreadex and >WaitForSingleObject (or pthread_create and pthread_join in POSIX if I remember >correctly the names). No mutex, no critical sections or anything like that. >It took me very little time to port it to POSIX from NT threads, just to find >the right equivalent functions, make a wrapper and watch the syntaxis. > >BTW, I know very little about threads either :-) > >Regards, >Miguel > > >>Since it is a recursive function one obviously cannot just call return to get >>out. >>Is there a way around this if one does not use threads (yet)? >> >>-S. >> >> >>>>But in this case, the thread fulfills it own condition, i.e. the polling thread >>>>calls fgets() and doesn't do anything until it gets it. The only interaction >>>>with the main thread is when the main thread checks the inputWaiting flag. So >>>>it doesn't seem like mutexes or semaphores would apply, according to your brief >>>>description. (Then again, what do I know...) >>>> >>>>btw, I am compiling with the Borland C++ free compiler right now, if that >>>>affects anyone's response. >>> >>>I do not like this design, but it is a matter of taste. Hhowever, if you are >>>looking for solution try to introduce in the loop sleep(x) when x is IIRC >>>miliseconds where the thread will sit doing nothing. So, if you do >>>sleep(100) the thread will poll every 0.1 seconds and will consume almost >>>no cpu. >>> >>>Regards, >>>Miguel >>> >>>will >>>you can int
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.