一个关于线程Sleep的小问题

mahushen 2015-03-13 10:12:58
创建了一个对象A,A中有一个线程B和一个公共过程C
C中包含了一条 thread.sleep(100) 语句,B线程在执行过程中调用了C,那么这时C中的thread.sleep语句的是否仅对B线程起作用?

如果在创建A的主进程中调用A的C过程,那么C中的thread.sleep的作用范围是那个?

...全文
275 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-03-13
  • 打赏
  • 举报
回复
这就好比玩大富翁的时候,有个格子里写上:休息一轮 那么当然是谁走到这个格子里,谁就休息,跟别人没有关系 大富翁的棋盘相当于代码 而4个玩家是线程 同样的代码,4个线程分别执行的时候,可能执行顺序完全都不一样的
搞不懂现代人 2015-03-13
  • 打赏
  • 举报
回复
说简单一些阻塞是当前调用他的线程,也就是B线程调用C函数时执行到Sleep,B线程就被阻塞,同样A调用也会阻塞A线程
老张一笑 2015-03-13
  • 打赏
  • 举报
回复
如果在创建A的主进程中调用A的C过程,那么C中的thread.sleep的作用范围是那个? 说白了就是,程序里定义了对象(class),哪个线程都可以去用它,哪个线程用它就Sleep谁。
於黾 2015-03-13
  • 打赏
  • 举报
回复
这东西很难理解吗? 好比你在函数里写了个while(true)死循环 那么到底是哪个线程陷入死循环? 当然是你用哪个线程去调用这个函数,哪个线程就陷入死循环了
於黾 2015-03-13
  • 打赏
  • 举报
回复
实际上就是执行到sleep,代码会阻塞在这里一定时间,再继续执行 那么当然是哪个线程去调用它,哪个线程就被阻塞了,跟别的线程没有关系
  • 打赏
  • 举报
回复
Sleep是阻塞代码所执行的“当前线程”的。 代码有两个概念,一个是指它的静态形式,另一个是加载到内存中之后被线程上下文指针所引用的“影像”。这里显然是指后者。
Forty2 2015-03-13
  • 打赏
  • 举报
回复
微软的MSDN解释为:‘将当前线程阻塞指定的毫秒数’ 也就是它作用于那个执行thread.sleep命令的线程。
l245382052 2015-03-13
  • 打赏
  • 举报
回复
引用 8 楼 SPFarm 的回复:
谁调用C,谁就暂停。 A调用的时候A会sleep, B调用的时候B会sleep。
最简单明了的答案
SPFarmer 2015-03-13
  • 打赏
  • 举报
回复
谁调用C,谁就暂停。 A调用的时候A会sleep, B调用的时候B会sleep。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧