- 主题:请问c#的semaphore能判断是否有线程在waiting吗?
rt
我现在的需求是
线程到finally的时候,要 semaphore.release
但是如果前面还有线程等待这个 semaphore 的时候,就不能release,直到没有线程等待,才能执行 semaphore.release
java封装的 semaphore 是有这个函数的,c#应该也有吧,但我一时没有找到...
--
FROM 223.72.109.*
能说一下这个需求的具体来源是什么吗?
很好奇
【 在 feed (鳄鱼) 的大作中提到: 】
: rt
: 我现在的需求是
: 线程到finally的时候,要 semaphore.release
: ...................
--
FROM 113.65.10.*
同好奇,java这么做是为啥?
你这个需求超过 semaphore的能力了。可以包装一下semaphore.
【 在 feed 的大作中提到: 】
: rt
: 我现在的需求是
: 线程到finally的时候,要 semaphore.release
: ...................
--
FROM 183.95.135.*
我的需求是这样的:
目前我的restful api,有个参数是 uuid
我发现一个bug是:有个client 会同一时间连续发送两条request,带有同样的uuid,于是造成我内部多线程逻辑的混乱。
于是我的需求是:
如果request的uuid是不一样的,那么什么事都没有。但是对具有相同的uuid的request,我需要它们挨个互斥访问我的内部函数。
于是我想到了 创建一个 map<uuid, semaphore>,当然这个map应该是线程安全的,java有封装好的线程安全的map,不知道c#有没有?(当然这是另外一个问题)
但接下来最大的难点在于要判断是否semaphore还有没有线程等待?如果没有,那么semaphore就需要删除掉,对应的map的记录也需要删除掉。不然内存就爆炸了。
我有哥们他自己刚实现了类似的逻辑,不过是用java做的。
【 在 keygen 的大作中提到: 】
: 能说一下这个需求的具体来源是什么吗?
: 很好奇
:
--
FROM 223.72.109.*
你的锁没有用对,用lock或是mutex,或是直接上rx distinctUntil也行
【 在 feed 的大作中提到: 】
: 我的需求是这样的:
: 目前我的restful api,有个参数是 uuid
: 我发现一个bug是:有个client 会同一时间连续发送两条request,带有同样的uuid,于是造成我内部多线程逻辑的混乱。
: ...................
--
FROM 123.116.197.*