windows多线程相关
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
最新文章
- 简单的javascript--test2
- HDU 1711 Number Sequence (KMP)
- 一本很不错的书----DOOM启示录
- window.location.href和window.open的几种用法和区别
- C#之参数线程
- Codeforces Round #347 (Div. 2) B. Rebus
- 手机页面rem布局
- SignalR安装以及安装问题
- SQL随笔
- 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)
- linux XAMPP安装与使用
- java‘小秘密’系列(一)---String、StringBuffer、StringBuilder
- HTML5仿微信聊天界面、微信朋友圈实例
- Apache Ant 项目构建
- Codeforces 915G Coprime Arrays 莫比乌斯反演 (看题解)
- GeoServer服务器环境的搭建
- VS2017调试出现异常浏览器直接关闭的解决办法
- snmp安装
- COMPILING ACTIONSCRIPT 3.0 WITH SUBLIME TEXT 2
- Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决
热门文章
- Shell终端配置
- 爬虫:获取多次跳转后的页面url
- [Selenium] 拖拽一个 Component 到 Workspace
- telnet: connect to address xxxxxxx: No route to host
- Caché数据库学习笔记(3)
- AIX修改用户密码登录不成功案例分享
- 二模 (16) day1&;day2
- eclipse配置ros cakin编译环境
- IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)
- ios7中的多任务