线程编程:Pthreads 实现与并行模式
1. 线程等待与超时处理
在多线程编程中,有时需要让线程等待某个条件满足,同时设置一个最大等待时间。以下是一个示例代码:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t c = PTHREAD_COND_INITIALIZER;
struct timespec time;
pthread_mutex_lock (&m);
time.tv_sec = time (NULL) + 10;
time.tv_nsec = 0;
while (!Bedingung)
if (pthread_cond_timedwait (&c, &m, &time) == ETIMEDOUT)
timed_out_work();
pthread_mutex_unlock (&m);
在这个例子中,执行线程最多等待 10 秒,等待条件满足。 time() 函数用于定义 time.tv_sec , time(NULL) 返回自 1970 年 1 月 1 日以来的绝对时间(以秒为单位)。如果 10 秒后没有信号到达,会调用 timed_out_work() 函数,然后再次评估条件。
2. 扩展锁机制:读写锁
传统的互斥锁(mutex)在保护共享数据结构时,同一时间只允许一个线程访问(读或写)。而读写锁
超级会员免费看
订阅专栏 解锁全文
28

被折叠的 条评论
为什么被折叠?



