如何创建计时器线程函数:timerThreadFunction(pthread_t thread_id),并通过其他函数以安全的方式检查计时器的结果:
// Begin of atomic part -- cause i'm in multithreaded environement
if (timerThreadFunction(thread_id) has not expired) {
// SOME WORK HERE
}
else {
// Timer expired
// some work here
}
// End of atomic part
谢谢。
最佳答案
如果您要询问互斥部分,则可以使用互斥锁来实现。使用pthread_mutex_init to initialize a mutex and pthread_mutex_destroy进行清理。然后使用pthread_mutex_lock and pthread_mutex_unlock获取并释放互斥量。
编辑基于对您在评论中提到的其他帖子的简要介绍(非常简短),我了解您正在寻找替代sleep()的方法。一种可能性是使用select()。做这样的事情:
struct timeval sleeptime;
// initialize sleeptime with the desired length such as
memset( &sleeptime, 0, sizeof( sleeptime ));
sleeptime.tv_sec = 5;
select( 0, NULL, NULL, NULL, &sleeptime );
那不会阻塞其他线程。但是,您应该注意,即使时间还没有到,如果进程收到任何信号,
select
也会返回(如果我没记错的话)。