多线程安全问题(一)

  • 注意有关计算的东西 要考虑清楚是否要放到lock代码中!!!!!!!!!!!!!!尤其是时间相关的,一旦代码放进lock当中,你就无法保证当前是哪个线程被堵塞,哪个线程在运行参与计算。时序性就无法确定,所以关于时间的计算一定要放到lock代码外,如获取当前时间,计算预时刻!!!这样确定这些计算就是此时此刻的计算,而不会被延后,就算延后1ms 一旦发生量变就会引发致命问题,我™找了两天啊!!!。
  • 数据结构发生变化的对象 需要加锁
  • 加锁频繁 会降低性能 
  • 对平均时刻数据量较大且频繁操作的列表 可以使用临时列表先存储添加的内容 来降低锁的执行频率来提高效能。如添加元素=》这个操作可能会被多线程访问需要加锁,如果在最终列表逻辑上加锁,锁会在每次访问列表的时候被触发,使用临时列表 可以统一的为所有元素进行添加,且临时列表会被清空,当没有元素需要添加的时候也就不需要触发锁了!!
  • 尽量少用锁,要考虑清楚 这个数据结构是否会被多线程访问,确定这段逻辑永远不会被多线程访问 就不用加锁!!!
作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/unity/1423
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
多线程安全问题(一)
注意有关计算的东西 要考虑清楚是否要放到lock代码中!!!!!!!!!!!!!!尤其是时间相关的,一旦代码放进lock当中,你就无法保证当前是哪个线程被……
<<上一篇
下一篇>>
文章目录
关闭
目 录