如何创建计时器线程函数: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也会返回(如果我没记错的话)。

09-28 01:29