Summary:
对于多线程编程,一个很重要的问题就是解决由数据共享引起的数据竞争的问题,通过一定的线程同步的方法能避免数据竞争。在Win32多线程中,同步方法包括用户态同步方式:InterLock、CriticalSection、SRWLock和内核态同步方式:Event、Semaphore、Mutex等。
本文主要目的是收集这些同步的方法和涉及到API的含义和使用,可能不会涉及到更深入的比如何时使用何种方式更好以及为什么,更深入的问题,单独在以后积累并记录。
一、数据竞争的例子
在分析同步的方法之前,先给出要解决的数据竞争的例子:
- #include "stdafx.h"
- #include
- #include
- #include
- long g = 0;
- #define THREAD_COUNT 10 // 线程数
- #define ACCESS_TIMES 10000000 // 访问共享变量的次数,增大其值,增加数据竞争发生的可能性
- void __cdecl ThreadProc(void *para)
- {
- printf("sub thread started\n");
- for (int i = 0;i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录