2011-05-02 37 views
2

我使用APR庫在C++中創建便攜式多線程程序。問題是我不需要睡覺一個線程,但是manual沒有提到這樣做的功能。如何睡APR線程?

你現在有辦法如何睡覺APR線程而無需使用本機系統功能嗎?我想避免任何操作系統特定的代碼。 謝謝。

+0

POSIX是很難 「OS具體」。我會非常謹慎地使用名稱中帶有「便攜式運行時」的任何庫。通常它們不是可移植的(相對於開發人員測試的每個操作系統而言都充滿了討厭的不可移植的操作系統特定的黑客攻擊),並且巨大的臃腫。 – 2011-05-02 11:44:47

+0

在我嘗試過win32,win64和Linux的情況下,APR線程正常工作。 – 2011-05-02 12:10:07

+0

就像我說的...... – 2011-05-02 12:13:19

回答

4

如果你只是想交出CPU給其他線程,你可以使用:

void apr_thread_yield(void); 

否則,您可以使用:

apr_status_t apr_thread_cond_timedwait(
     apr_thread_cond_t *  cond, 
     apr_thread_mutex_t * mutex, 
     apr_interval_time_t  timeout 
    ); 

apr_status_t apr_thread_cond_wait(
     apr_thread_cond_t *  cond, 
     apr_thread_mutex_t * mutex 
    ); 

參考here

+0

非常感謝,我錯過了。 – 2011-05-02 08:35:33

1

...並且在APR睡眠功能也一樣, 「apr_time.h」:

void apr_sleep (apr_interval_time_t t) 

鏈接:sleep