Chinese, Simplified subtitles

← cs344_unit2_22_l_测验_同步性

Get Embed Code
3 Languages

Showing Revision 2 created 05/10/2013 by Michael Xiao.

  1. 现在我们知道线程可以通过
  2. 共享和全局内存访问互相的结果。
  3. 这意味着它们可以合作进行一个计算,但有个问题。
  4. 如果一个线程在另一线程
  5. 有机会计算或写入结果前就试图读取它,会怎样?
  6. 这意味着我们需要同步性。
  7. 线程需要互相同步,以避免这种情形。
  8. 需要同步性
  9. 真的是并行计算中最基本的问题。
  10. 现在同步性最简单的形式叫做屏障。
  11. 屏障是程序中一个点,
  12. 在该点所有线程停止、等待。
  13. 当所有线程都到达屏障,
  14. 它们可以继续进行其余代码。
  15. 我们举例说明。
  16. 这有一些线程,它们都按代码进行。
  17. 我将用不同的颜色画它们,
  18. 我还用不同长度画它们,
  19. 以便你明白它们在代码中处于不同位置。
  20. 它们在执行程序的不同点。
  21. 想法是当它们到达屏障,
  22. 它们会停下来等待其它线程赶上。
  23. 所以在我的画中,红色的首先到达屏障然后停下。
  24. 同时,蓝色的仍在运行,绿色的也在运行,
  25. 蓝色的终于到达屏障,
  26. 并停下,
  27. 绿色的是最后到达屏障并停下的。
  28. 现在全部3个线程——在我的例子中,假设我只有三个线程。
  29. 现在所有线程都已到达屏障,然后他们可以自由地继续运行。
  30. 它们又都继续运行,我们实际上不知道哪个先运行。
  31. 可能是蓝色的最先冲出大门,
  32. 接着可能是绿色的,红色的可能是最后一个。
  33. 我们看看代码来进行说明。