William E. Kempf wrote:
From: "hlh771
" How to stop(or cancel) a thread? Suppose I have a main thread and a worker thread, the worker thread does something looply,and when the main thread get a message indicating the process should exit, I want stop the worker thread,how to do that?I have read other thread library,their thread class supply a method called stop or cancel which stops the thread. Their Implementation is:the thread class has a data member indicating whether the thread should stop,and the thread function looply check the data member whether the thread should stop.Generally the data member's type is a bool or Event. Is it the best way to stop the thread? How the boost to deal with this? Thanks in advance.
Today you should use a flag and a condition/mutex combination. Direct support for cancellation is being provided in a future release.
Actually, this works fine for ordinary loops. The problem I am facing is how to stop a thread which may sit in blocking system calls like reading from a (blocking) socket. Is there any "standard" way to solve this problem? Now, I am using nonblocking sockets, implementing "timeouts" myself, but it just doesn't feel right... Aki
William E. Kempf wekempf@cox.net
Info: http://www.boost.org Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl Unsubscribe: mailto:boost-users-unsubscribe@yahoogroups.com
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/