Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 在C中经过一定时间后终止线程_Multithreading_Concurrency_Pthreads - Fatal编程技术网

Multithreading 在C中经过一定时间后终止线程

Multithreading 在C中经过一定时间后终止线程,multithreading,concurrency,pthreads,Multithreading,Concurrency,Pthreads,从父线程杀死子线程 我将客户建模为C中的一个线程。现在,客户有一个属性,指定它可以等待多长时间才能得到服务。 如果时间限制超过等待时间,则客户将从服务提供商处退回 我知道pthread_cancel(),但如何跟踪线程的时间 如果线程打印在退出之前是否进行过维护,我如何解决该问题。我不明白为什么需要从父线程中删除它。您可以在子线程例程中使用条件变量,只有在父线程有时间的情况下才能设置该变量。如果未设置条件变量,请使用pthread_cond_timed_wait并在超时后退出。听起来您希望为那些

从父线程杀死子线程

我将客户建模为C中的一个线程。现在,客户有一个属性,指定它可以等待多长时间才能得到服务。 如果时间限制超过等待时间,则客户将从服务提供商处退回

我知道pthread_cancel(),但如何跟踪线程的时间


如果线程打印在退出之前是否进行过维护,我如何解决该问题。

我不明白为什么需要从父线程中删除它。您可以在子线程例程中使用条件变量,只有在父线程有时间的情况下才能设置该变量。如果未设置条件变量,请使用pthread_cond_timed_wait并在超时后退出。听起来您希望为那些在合理时间内未得到服务而放弃并离开队列的客户建模。这与一个店主很不一样,店主如果顾客等得太久就会把他们赶出去。为什么不让客户线程通过调用
pthread\u cond\u timedwait(…)
?另外,杀死进程中的线程几乎总是一个坏主意。很难保证与其他线程共享的任何数据在终止后都处于安全合理的状态。线程应始终相互配合。如果线程A希望线程B死亡,那么它应该要求线程B彻底关闭自己。