Jee*_*tel 1 c c++ linux multithreading operating-system
让我们有例子..
一些复杂的工作除以4线程
thread -A is calling function_A
thread -B is calling function_B
thread -C is calling function_C
thread -D is calling function_D
Run Code Online (Sandbox Code Playgroud)
现在条件是线程A,B,C可以同时工作但是当线程D执行function_D时它会看到来自A,B,C的任何线程是否正在执行那里的函数?如果是,那么它将等待它们完成,当没有来自a,b,c的线程正在执行该函数时,线程D将开始执行函数D.
我怎样才能做到这一点 ?任何粗鲁的想法?
编辑:function_A,function_B,function_c正在使用一个句柄.和function_D正在关闭该句柄.当任何函数使用该句柄时,它不应该被function_d关闭.
这听起来像计数信号量的工作.
使用句柄的每个线程都应该增加信号量值.线程D应该等待信号量达到零.
如果在没有关注线程D运行的情况下实现这一点,如果线程D在A,B或C之前运行并立即关闭手柄,请不要感到惊讶.