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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
C++ 在Linux中,如何在没有条件变量的情况下阻止线程中的操作,并在信号上恢复它?_C++_Multithreading - Fatal编程技术网

C++ 在Linux中,如何在没有条件变量的情况下阻止线程中的操作,并在信号上恢复它?

C++ 在Linux中,如何在没有条件变量的情况下阻止线程中的操作,并在信号上恢复它?,c++,multithreading,C++,Multithreading,我试图编写一个不使用pthread_cond变量的错误代码。在条件检查中,如果条件失败,它将永远等待/阻塞。线程B应该发出信号以使线程a解锁。我不知道Linux中用于阻塞和取消阻塞的API。 我想展示条件变量的好处。但是,我想首先编写一个代码,在一个条件下阻塞,它应该被信号解除阻塞。在本文中,我将展示信号是如何丢失的,以及竞态条件是如何发生的。请帮助我了解API及其用法。您可以改用pthread\u互斥体。 首先创建一个全局互斥体,并在创建线程a和B之前将其锁定到main()函数中。 在线程A中

我试图编写一个不使用pthread_cond变量的错误代码。在条件检查中,如果条件失败,它将永远等待/阻塞。线程B应该发出信号以使线程a解锁。我不知道Linux中用于阻塞和取消阻塞的API。
我想展示条件变量的好处。但是,我想首先编写一个代码,在一个条件下阻塞,它应该被信号解除阻塞。在本文中,我将展示信号是如何丢失的,以及竞态条件是如何发生的。请帮助我了解API及其用法。

您可以改用pthread\u互斥体。 首先创建一个全局互斥体,并在创建线程a和B之前将其锁定到main()函数中。 在线程A中执行一个pthread_mutex_lock(),它将等待直到该互斥锁解锁。
在线程B中执行pthread_mutex_unlock(),以向线程a发出继续的信号。

您可以实现一个繁忙的等待循环吗?我想您是在询问关于
sigsupspend
。我正在使用pause函数来阻止它。如何取消阻止此功能?我尝试了这个函数,但它无法解除阻止它-kill(pid_A,SIGCONT);