C++多线程基础学习笔记(十)
2024-09-05 05:56:18
一、Windows临界区的基本用法
CRITICAL_SECTION my_winsc; //定义一个Windows的临界区,相当于一个mutex变量
InitializeCriticalSection(&my_winsc); //初始化
EnterCriticalSection(&my_winsc); //进入临界区,相当于lock()
LeaveCriticalSection(&my_winsc); //离开临界区,相当于unlock()
线程thread_1打印1-50,线程thread_2打印51-100
#include <iostream>
#include <Windows.h>
#include <thread>
using namespace std; int Count = ;
CRITICAL_SECTION my_winsc; //定义一个Windows的临界区,相当于mutex void mythead_1()
{
for (int i = ; i < ; i++)
{
EnterCriticalSection(&my_winsc); //进入临界区,相当于lock()
EnterCriticalSection(&my_winsc); //进入临界区,相当于lock()
Count++;
cout << std::this_thread::get_id() << "线程:" << Count << endl;
LeaveCriticalSection(&my_winsc); //离开临界区,相当于unlock()
LeaveCriticalSection(&my_winsc); //离开临界区,相当于unlock()
}
} void mythread_2()
{
for (int i = ; i < ; i++)
{
EnterCriticalSection(&my_winsc);
Count++;
cout << std::this_thread::get_id() << "线程:" << Count << endl;
LeaveCriticalSection(&my_winsc);
}
} int main()
{ InitializeCriticalSection(&my_winsc); //初始化
thread thread_1(mythead_1);
thread thread_2(mythread_2);
thread_1.join();
thread_2.join(); system("pause");
return ;
}
二、Windows临界区与mutex的不同
1.mutex是独立互斥量,临界区是递归的独立互斥量,同一个mutex互斥量在一个线程入口函数只能lock一次,但是在本例中可以多次进入临界区,即可以使用多次加锁,只需对应的解锁相应次数就行了
2.Windows临界区必须初始化
最新文章
- mybatis调用存储过程 无参、带有输入输出参数,输出游标类型的 存储
- Java Hashtable的实现
- shell--2.shell数组
- 查询sql2005&;2008全部表信息
- R语言获取国内的股票数据
- SpringMVC学习笔记(二)
- MSVCRTD.lib(mfc.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC (转)
- 【hadoop2.6.0】利用JAVA API 实现数据上传
- E - 最短的名字
- python3使用PyMysql连接mysql数据库
- [codevs2230]黑白棋子
- oracle plsql 64位 32位连接未打开 无法解析各种错终极解决方案
- PHP mysql查询工具
- java.net.UnknownHostException: master
- redis出现错误:NOAUTH Authentication required.
- 自学Zabbix4.1 zabbix监控web服务器访问性能
- 关于HBase Shell命令基本操作示例
- Python tuple 函数
- Android——适配器其他组件(AutoCompleteTextView:自动完成文本编辑框;Spinner:下拉列表)
- HDU1575:Tr A(矩阵快速幂模板题)
热门文章
- 汇编语言学习-Dos下的调试工具debug的使用教程
- window.innerHeight与document.documentElement.clientHeight与document.body.clientHeight区别
- ICEM—八分之一球(2D转3D)
- Java中常见的集合类比较
- storm java环境变量设置
- mysql 给用户设置权限
- 【思考】为什么说Bagging减少variance,Boosting减少bias?(转载)
- C# 去除所有的html标签
- Qt开发经验小技巧合集
- jExcelAPI 操作 Excel 文件