2011-03-21 77 views
1

我正在使用多線程應用程序,我正在使用SetEvent()來關閉窗口上的線程。如何在linux中發信號線?

什麼是在linux C++中發送信號給線程的等價物?該應用程序必須在Windows和Linux上運行。

在Windows中,我做了以下內容:

在UI我有一個按鈕,說關閉線程。一旦用戶按下按鈕,它將使用SetEvent()來設置事件,這導致線程自行停止。

void closethread() 
{ 
    Setevent(hEventhandle); 
} 


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

當用戶按下按鈕時有沒有更好的方式關閉線程?

回答

3

如果您正在編寫跨平臺的GUI應用程序,那麼您可能已經使用了一些跨平臺的GUI框架,如QtWxWidgets。這些框架通常都有自己的跨平臺庫,用於各種各樣的事情,包括多線程。因此,不要使用本機API,請查看您(希望)使用的框架的文檔。

或者,您可以考慮使用Boost.Thread以便攜方式處理多線程。

+0

是的,我可以使用QT。 – 2011-03-21 10:13:37

+0

@Chris_vr:Qt內置了一個線程安全的信號機制,所以你應該使用它。 – 2011-03-21 10:16:14

+0

我不知道QT可以提供與QT事件管理API相關的鏈接,例如 – 2011-03-21 10:16:33

2

您可以使用條件變量 - 請參閱pthread_cond_wait

+1

如果您想保持無知,請使用QT/wx。如果你真的想*知道*如何在多個平臺上做簡單的事情而不訴諸厚的包裝,請閱讀pthreads。 – 2011-03-22 07:53:25