如何在linux中发出信号?

时间:2011-03-21 09:50:19

标签: c++ linux winapi

我正在研究多线程应用程序,我使用SetEvent()来关闭Windows上的线程。

linux c ++中向线程发送信号的等价物是什么?该应用程序必须在Windows和Linux上运行。

在Windows中,我正在执行以下操作:

在用户界面中,我有一个按钮说关闭帖子。一旦用户按下按钮,它将使用SetEvent()设置事件,这会导致线程自行停止。

void closethread()
{
    Setevent(hEventhandle);
}


void * threadProc(void* args)
{
    waitforsingleobject(hEventhandle,infintie)
}

当用户按下按钮时,有没有更好的方法来关闭线程?

2 个答案:

答案 0 :(得分:3)

如果您正在编写跨平台GUI应用程序,则可能已使用某些跨平台GUI框架,例如QtWxWidgets。这些框架通常带有各自的跨平台库,可用于各种事物,包括多线程。因此,请查看您(希望)使用的框架文档,而不是使用本机API。

或者,您可以考虑使用Boost.Thread以便携方式处理多线程。

答案 1 :(得分:2)

您可以使用条件变量 - 请参阅例如pthread_cond_wait