1.多线程同步的方法

a)entercirticalsection leaveciriticalsection

b)Mutex互斥对象 waitforsingleobject releasemutex使用方法和上面一个类似

c)createevent waitforsingleobject setevent使event对象变为受信状态 resetevent使event对象变未受信状态,通过这两种的设置来控制那些等街待这个event对象的线程的执行

d)semophore和以上几种单一入口控制不同,semophore是对多个并行入口进行控制,当这多个入口都被占用的时侯,semophore对象才变为阻滞状态,因此线程一旦处理完相关任务要记得调用releasesemophore来释放资源

e)waitformultiobject等待多个内核对象,只用这多个内核对象都变为受信状态,后续的代码才可以被执行。

f)interlockedincreament and interlockeddecreament这是一系列的函数,每次将一个变量值加1或减1.

2.关于线程局部存储

每个线程都有自己的数组,最大长度是1000

每次tlsalloc找到一个可用index然后返回,然后进程中的各个线程都可以以这个index参数来调用tlsgetvalue or tlssetvalue来读写相应index的数组元素,虽然线程都可以以相同的index作为参数,但这并不会冲突,因为它们都只操作本线程相关的数组

不通过tlsalloc提供的索引tlssetvalue一样可以设置各自数组中特定index的数组项的值,既然不通过TlsAlloc一样能通过索引来自行存取数据,那还需要tlsalloc来干嘛,这是因为有时我们可能需要多个线程保有同一类型的数据,但这数据是线程相关的,而且我们在调用tlsgetvalue时并不确定其它线程是否通过tlsalloc声明占有了该index,所以我们需要重新用tlsalloc来获取一个对所有线程可用的index,在用完后记得用tlsfree来释放该index,否则可能造成TLS_OUT_OF_INDEXES

最新文章

  1. 简单的javascript--test2
  2. HDU 1711 Number Sequence (KMP)
  3. 一本很不错的书----DOOM启示录
  4. window.location.href和window.open的几种用法和区别
  5. C#之参数线程
  6. Codeforces Round #347 (Div. 2) B. Rebus
  7. 手机页面rem布局
  8. SignalR安装以及安装问题
  9. SQL随笔
  10. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)
  11. linux XAMPP安装与使用
  12. java‘小秘密’系列(一)---String、StringBuffer、StringBuilder
  13. HTML5仿微信聊天界面、微信朋友圈实例
  14. Apache Ant 项目构建
  15. Codeforces 915G Coprime Arrays 莫比乌斯反演 (看题解)
  16. GeoServer服务器环境的搭建
  17. VS2017调试出现异常浏览器直接关闭的解决办法
  18. snmp安装
  19. COMPILING ACTIONSCRIPT 3.0 WITH SUBLIME TEXT 2
  20. Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决

热门文章

  1. Shell终端配置
  2. 爬虫:获取多次跳转后的页面url
  3. [Selenium] 拖拽一个 Component 到 Workspace
  4. telnet: connect to address xxxxxxx: No route to host
  5. Caché数据库学习笔记(3)
  6. AIX修改用户密码登录不成功案例分享
  7. 二模 (16) day1&day2
  8. eclipse配置ros cakin编译环境
  9. IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)
  10. ios7中的多任务