socket多线程调用同一个方法,加锁之后想先让每个进来的线程睡200毫秒,这样能实现吗? 5

publicvoidSend(stringtxtstr){objectlockthis=newobject();lock(lockthis){Thread.Sleep(2... public void Send(string txtstr){
object lockthis = new object();
lock (lockthis)
{
Thread.Sleep(200);
_tcpclient.Client.Send(Encoding.Unicode.GetBytes(txtstr));
}
}
如果AB线程同时调用,是不是A先睡 200,然后执行,B再睡200,再执行?
展开
 我来答
bjl0523
2015-06-12 · TA获得超过118个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:74.9万
展开全部
lock (lockthis);是不是要加分号?
如果AB线程同时调用,这个就是对所锁的理解了。
当先执行的线程,锁生命周期结束后,即释放后,才会执行另一个线程。
如果要实现你说的
{
lock (lockthis)
Thread.Sleep(200);
}
这样是可以的,但是具体的执行情况可能跟你想的不一样,因为我们没有对两个线程进行严格控件。

系统会为每个线程分配时间片,而切换工作都是由系统完成的。比如,上面的写法,就会使先执行的肯定会睡眠200毫秒,但是此时,另一个线程执行到什么位置,我们是不知道的,只能说同时执行到这段语句时,过程基本跟你说的一样。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式