我的需求是这样的:
目前我的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.*