zoukankan      html  css  js  c++  java
  • 保证多线程程序稳定的一些要点

    1. 尽量不要detach线程,除非你能保证这个线程所操作的对象无论在什么时候都不会为空,即使全局对象释放了也不会操作空对象。

    2. 不要随机地启动一堆线程后放任它们自由初始化。对所有线程模块的初始化要严格管理。必要时要添加Loader模块和依赖表来控制其初始化及启动。

    3. 在进行join线程时要选进行joinable检查,并使用try-catch捕获join的异常。

    4. 对运行状态的判断等一些量尽量选用std::atomic<T>型变量来处理。

    5. 善用锁。

    6. 不要使用sleep()、usleep()这些函数,它们是非线程安全的。要sleep时使用std::this_thread::sleep_for()或std::this_thread::yield()。

    7. 对于要保证固定频率的线程,使用std::condition_variable.wait_for(),而非std::this_thread::sleep_for()。sleep_for是休眠固定时间,不能实现稳定频率的输出。另外,使用信号量等待会便于中途打断,以免系统退出时会卡在sleep上无法中断线程。

    8. 要严格控制线程的优先级。

    想到更多再补充。

  • 相关阅读:
    web10 动态action的应用
    web09 struts2配置 struts2入门
    web 08 struts2入门 struts2配置 struts包
    web07-jdbcBookStore
    web06-PanduanLogin
    web05-CounterServlet
    web04-LoginServlet
    web03-OutputInfo
    web02-welcomeyou
    web01-helloworld
  • 原文地址:https://www.cnblogs.com/qyit/p/14486606.html
Copyright © 2011-2022 走看看