2011-05-02 21 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