gpt4 book ai didi

c - 如何在给定时刻创建线程

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:38 25 4
gpt4 key购买 nike

我需要帮助理解如何处理我试图解决的问题。我正在编写一个程序,从终端接收命令到命名管道(例如:echo“command”>管道)。
该命令包含有关我必须创建的线程的信息。每个命令代表一个线程。我已经分析了命令。
问题是:我必须在特定的时间内创建线程。例如,力矩500(任意单位)。
最好的办法是什么?我想把所有“未来线程”放在一个数组中,在while循环中检查时间,并在时间匹配时创建线程。但这听起来一点也不理想,我不确定是否有更好的方法。
感谢任何帮助!

最佳答案

我不确定你到底想做什么,但你的第一个方法基本上是busy waiting,这通常是不好的。
忙碌的等待会浪费CPU时间而无所事事:

while (not_my_time) { 
// waste CPU endlessly checking
// even though the program cannot progress
}
pthread_create(...);

理想情况下,程序会放弃CPU,让某些东西执行,定期检查是否可以在这里取得任何进展。
放弃CPU有很多复杂的方法,但最简单的可能是通过 sleep。尤其是因为听起来你想在一段时间后生成一个线程。
例如,要在10秒后生成运行函数 foo的线程:
void* thread_spawner(int delay, void *(*start_routine) (void *), void *arg) {
sleep(delay);
pthread_t thread;
pthread_create(&thread, NULL, start_routine, arg);
return NULL;
}

如果您希望在延迟后生成多个线程,则不需要从线程中调用 thread_spawner,因为 sleep将阻塞它所在的任何线程。

关于c - 如何在给定时刻创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770731/

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