gpt4 book ai didi

c - 在线程中休眠(C/POSIX 线程)

转载 作者:太空狗 更新时间:2023-10-29 16:39:37 25 4
gpt4 key购买 nike

我正在开发一个使用 POSIX Threads 的多线程应用程序.我正在使用线程来执行定期 工作,为此我正在使用 usleep(3)暂停线程执行。我的问题是如何从主线程中取消 usleep() 计时器,我尝试了 pthread_kill(thread, SIGALRM) 但它具有全局效果,导致主应用程序终止(默认情况下)。这是我的伪代码:

void threaded_task(void *ptr) {
initialize();

while(running) {
do_the_work();
usleep(some_interval);
}

clean_up();
release_resources();
}

下面是用于停止(和正常关闭)给定线程的伪函数来自主线程:

void stop_thread(pthread_t thread) {
set_running_state(thread, 0); // Actually I use mutex staff
// TODO: Cancel sleep timer so that I will not wait for nothing.
// Wait for task to finish possibly running work and clean up
pthread_join(thread, NULL);
}

实现我的目标的简便方法是什么?我必须使用条件变量还是可以使用 sleep() 变体来实现?

最佳答案

select() 与 FIFO 或套接字结合使用,您可以戳它以唤醒它。

关于c - 在线程中休眠(C/POSIX 线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com