加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中中止,暂停和恢复线程?

发布时间:2020-12-15 17:50:24 所属栏目:百科 来源:网络整理
导读:如何在C#中中止,暂停和恢复线程? 相关问题: Is there a way to indefinitely pause a thread? 解决方法 一般来说,不要暂停(或中止)线程 – 您通常不能告诉它正在做什么,这可能会导致各种锁定问题,例如未释放的锁或类型初始化程序(静态构造函数)被挂起. 但
如何在C#中中止,暂停和恢复线程?

相关问题:

Is there a way to indefinitely pause a thread?

解决方法

一般来说,不要暂停(或中止)线程 – 您通常不能告诉它正在做什么,这可能会导致各种锁定问题,例如未释放的锁或类型初始化程序(静态构造函数)被挂起.

但是,您可能会通过更优雅的方法暂停代码 – 例如,在循环中使用ManualResetEvent,外部代码(在另一个线程上)可以打开和关闭:

// worker loop
while(alive) {
    // if the gate is closed,wait up to 5 seconds; if still not
    // open,go back to the loop-start to re-check "alive"
    if (!gate.WaitOne(5000)) continue;

    // do work...
}

那么另一个具有访问权限的线程(可能是间接的)可以暂停(重置)并恢复(设置)工作者,但是知道它只能在安全状态下暂停.

回复你的评论(另一个答复) – 听起来你有一个读者和作家;理想的生产者/消费者场景.我有一个例子on this question如何编写一个具有上限大小的生产者/消费者(所以如果消费者运行缓慢,它不会沼泽) – 消费者阻止,如果没有数据,生产者阻止如果有太多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读