我在使用 ANSI C而不是Linux时遇到了pthreads的问题。
我想使用线程获取命令,因此它正在等待它们。但是,在某种情况下,我需要杀死它。
如果我使用pthread_kill(),它会发送一个信号并杀死整个过程。并且,如果我正确的方式,pthread_cancel需要线程为它做好准备。
是否有更清洁或更简单的方法从另一个线程中杀死一个线程?
感谢。
答案 0 :(得分:4)
你没有说你的线程正在等待什么样的命令/消息,但如果你可以发送一个“请你自己杀了”的消息,然后等待它死于pthread_join(...) ,你会更开心。
如果您的线程正在等待文件描述符,您可以使用poll()或select()并让它等待两个文件描述符。然后你的主线程可以在第二个上发送消息。
如果你的线程正在等待GUI事件,大多数工具包都有办法发送你自己的消息。例如Win32中的PostMessage()或X11中的XSendEvent()。