C++拾遗--多线程:原子操作解决线程冲突
前言
在多线程中操作全局变量一般都会引起线程冲突,为了解决线程冲突,引入原子操作。
正文
1.线程冲突
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <Windows.h>
int g_count = 0;
void count(void *p)
{
Sleep(100); //do some work
//每个线程把g_count加1共10次
for (int i = 0; i < 10; i++)
{
g_count++;
}
Sleep(100); //do some work
}
int main(void)
{
printf("******多线程访问全局变量演示***by David***\n");
//共创建10个线程
HANDLE handles[10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
handles[j] = _beginthread(cou

本文介绍了在多线程环境下,全局变量的更新可能导致线程冲突的问题,并提出通过原子操作来解决这一问题。文章详细阐述了线程冲突的原因,并以C++为例,说明如何使用InterlockedIncrement等原子操作函数确保操作的原子性,从而避免线程冲突,保证程序执行的正确性。
最低0.47元/天 解锁文章
1485

被折叠的 条评论
为什么被折叠?



