【发布时间】:2017-05-17 08:31:42
【问题描述】:
这适用于多线程场景中的异常处理场景。多个线程在需要时在互斥下锁定的某些共享资源上并行工作。如果一个线程面临异常,我可以使用 sem_trywait 检查是否有其他线程正在等待信号量,如果我发现某个线程正在等待信号量,将使用发生异常的标志,我将发出 sem_post 以便等待线程可能会等待并检查是否发生了一些异常,然后再继续进行。如果发生异常,其他正在等待的线程现在将继续正常退出。请建议。 我的实际问题是:我可以使用 sem_trywait 吗?
【问题讨论】:
-
您的实际问题是什么?
-
@ammoQ,我可以使用 sem_trywait 来检查...吗?
-
所要做的就是获取或不获取信号量。它不会告诉你是否有人在等待它。
-
@wallyk 如果我可以在一个线程中获取信号量,这是否意味着没有其他人在等待?还是有其他方式知道?
-
@Dr.DebasishJana 如果我可以在一个线程中获得信号量,那是否意味着没有其他人在等待? 这只是意味着您的线程成功等待信号。即使您在该信号量上调用
sem_post(),成功的sem_trywait()也不意味着没有其他线程在该信号量上等待。
标签: c multithreading semaphore solaris-10