c# 多线程问题—为什么队列会少
现在用c#的queue定义的一个队列写法大概是这样的publicstaticreadonlyobjectenqueuelock=newobject();lock(enqu...
现在用c# 的queue定义的一个队列写法大概是这样的
public static readonly object enqueuelock = new object();
lock (enqueuelock)
{
token= global.searchTokenPool.Dequeue();
}
执行程序。。。
lock(enqueuelock)
{
global.searchTokenPool.Enqueue(token);
}
现在的问题是,一开始pool的大小是70,现在同时有2个线程,第一个线程拿到的大小是70,第二个线程拿到的大小是68,最后换回去pool的大小变成了69,求教大神这是为什么啊? 展开
public static readonly object enqueuelock = new object();
lock (enqueuelock)
{
token= global.searchTokenPool.Dequeue();
}
执行程序。。。
lock(enqueuelock)
{
global.searchTokenPool.Enqueue(token);
}
现在的问题是,一开始pool的大小是70,现在同时有2个线程,第一个线程拿到的大小是70,第二个线程拿到的大小是68,最后换回去pool的大小变成了69,求教大神这是为什么啊? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
若以下回答无法解决问题,邀请你更新回答
展开全部
你的意思是要保证严格的一进一出?
追问
是的
追答
看看这个示例呢,一个线程是生产者,另一个是消费者:
http://www.getcodesamples.com/src/C820CF70/F2B1A332
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询