【发布时间】:2020-08-02 20:19:39
【问题描述】:
我在 Ubuntu 上用 C 语言编写代码。
我需要编写一个名为“timeredThread”的线程,它在 N 微秒后在临界区执行一些操作,如下所示:
void * timeredThread(void)
{
sleep(TIMEOUT);
pthread_mutex_lock(&mutex);
//operations
pthead_mutex_unlock(&mutex);
}
另外,我需要另一个线程,例如“timerManager”,它可以重置前一个计时器。我的第一个想法是创建一个“timerManager”,它杀死“timeredThread”并创建另一个,但这不起作用,因为如果我在等待互斥锁时用 pthread_cancel() 杀死“timeredThread”,我会创建一个死锁。死锁是因为互斥体处于锁定状态而产生的。
我能做些什么呢? 在此先感谢大家。
【问题讨论】:
-
您尝试做的是一个广泛使用的概念。看看其他人在做什么:stackoverflow.com/questions/4708760/c-timers-and-threads-again 如果你用谷歌搜索“C 中的计时器线程”,你会得到很多结果。
标签: c linux multithreading timer mutex