我们如何在C,C ++中控制/调度线程的执行?
在本文中,我们深入探讨了一个较低级别的主题,即如何调度和控制程序中线程的执行。为此,我们将同时使用C和C ++。
从以下位置下载源代码:https: //github.com/prateekparallel/InterThreadCommunication
前两个示例在C中,最后一个示例在C ++中。在我的第一种方法中,我使用了3个互斥锁和3个条件变量。通过以下示例,您可以计划或控制C和C ++中的任意数量的线程。首先,请看下面的第一个线程。在这里,它锁定了互斥锁1(以便其他线程无法访问该代码)开始执行(未添加代码,仅是注释),最后在完成其任务等待cond1之后,同样,第二个线程锁定了互斥锁2,开始执行其业务逻辑。 ,最后,等待cond2和第三个线程锁定的互斥锁lock3的条件,开始执行其业务逻辑,最后等待cond3的条件。
我在这里没有添加任何业务逻辑,因为这只是一个例子。在注释掉的部分中,您可以添加将在并行模式下执行的业务逻辑。假设线程3依赖于将要插入表中的线程1的最终输出,线程3将在创建其最终结果之前读取该信息,线程2取决于线程3的最终结果以生成其最终结果。因此,在将数据插入表中之后,线程1通过条件变量向线程3发出信号,以继续进行其最终处理。这意味着线程1控制线程3。由于线程2取决于线程3的最终结果,因此线程3控制线程2的执行。在这里,我们可以允许线程1独立执行,因为它的操作不依赖于任何其他线程,例如,对于线程控制,我们在这里控