C++ 在Linux中,如何在没有条件变量的情况下阻止线程中的操作,并在信号上恢复它?
我试图编写一个不使用pthread_cond变量的错误代码。在条件检查中,如果条件失败,它将永远等待/阻塞。线程B应该发出信号以使线程a解锁。我不知道Linux中用于阻塞和取消阻塞的API。C++ 在Linux中,如何在没有条件变量的情况下阻止线程中的操作,并在信号上恢复它?,c++,multithreading,C++,Multithreading,我试图编写一个不使用pthread_cond变量的错误代码。在条件检查中,如果条件失败,它将永远等待/阻塞。线程B应该发出信号以使线程a解锁。我不知道Linux中用于阻塞和取消阻塞的API。 我想展示条件变量的好处。但是,我想首先编写一个代码,在一个条件下阻塞,它应该被信号解除阻塞。在本文中,我将展示信号是如何丢失的,以及竞态条件是如何发生的。请帮助我了解API及其用法。您可以改用pthread\u互斥体。 首先创建一个全局互斥体,并在创建线程a和B之前将其锁定到main()函数中。 在线程A中
我想展示条件变量的好处。但是,我想首先编写一个代码,在一个条件下阻塞,它应该被信号解除阻塞。在本文中,我将展示信号是如何丢失的,以及竞态条件是如何发生的。请帮助我了解API及其用法。您可以改用pthread\u互斥体。 首先创建一个全局互斥体,并在创建线程a和B之前将其锁定到main()函数中。 在线程A中执行一个pthread_mutex_lock(),它将等待直到该互斥锁解锁。
在线程B中执行pthread_mutex_unlock(),以向线程a发出继续的信号。您可以实现一个繁忙的等待循环吗?我想您是在询问关于
sigsupspend
。我正在使用pause函数来阻止它。如何取消阻止此功能?我尝试了这个函数,但它无法解除阻止它-kill(pid_A,SIGCONT);