我正在研究多线程应用程序,我使用SetEvent()
来关闭Windows上的线程。
linux c ++中向线程发送信号的等价物是什么?该应用程序必须在Windows和Linux上运行。
在Windows中,我正在执行以下操作:
在用户界面中,我有一个按钮说关闭帖子。一旦用户按下按钮,它将使用SetEvent()
设置事件,这会导致线程自行停止。
void closethread()
{
Setevent(hEventhandle);
}
void * threadProc(void* args)
{
waitforsingleobject(hEventhandle,infintie)
}
当用户按下按钮时,有没有更好的方法来关闭线程?
答案 0 :(得分:3)
如果您正在编写跨平台GUI应用程序,则可能已使用某些跨平台GUI框架,例如Qt或WxWidgets。这些框架通常带有各自的跨平台库,可用于各种事物,包括多线程。因此,请查看您(希望)使用的框架文档,而不是使用本机API。
或者,您可以考虑使用Boost.Thread以便携方式处理多线程。
答案 1 :(得分:2)
您可以使用条件变量 - 请参阅例如pthread_cond_wait