一、(LINUX 线程同步) 引入
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,原创水平有限有误请指出线程相比进程有着先天的数据共享的优势,如下图,线程共享了进程除栈区以外的所有内存区域如下图所示:但是这种共享有时候也会带来问题,简单的考虑如下C++代码:点击(此处)折叠或打开{
千家信息网最后更新 2025年12月02日一、(LINUX 线程同步) 引入原创水平有限有误请指出
线程相比进程有着先天的数据共享的优势,如下图,线程共享了进程除栈区以外的所有内存区域如下图所示:

但是这种共享有时候也会带来问题,简单的考虑如下C++代码:
就是临界区代码
后面将对他们进行描述,这里我们简单实用静态互斥锁进行解决这个问题。
临界区的选择应该尽量小,避免对多线程的并发性产生较大的性能影响
具体代码如下:
注意:一个简单类型的i++也不一定是一个原子操作,所以在涉及到并发修改共享变量的时候一定要使用
线程同步手段。
作者微信:

线程相比进程有着先天的数据共享的优势,如下图,线程共享了进程除栈区以外的所有内存区域如下图所示:

但是这种共享有时候也会带来问题,简单的考虑如下C++代码:
点击(此处)折叠或打开
- {
- int b = 0;
- b = a;
- a = b+1;
- return *this;
- }
就是临界区代码
后面将对他们进行描述,这里我们简单实用静态互斥锁进行解决这个问题。
点击(此处)折叠或打开
- //原子操作 加锁
- pthread_mutex_lock(&mtx);
- ++test;
- pthread_mutex_unlock(&mtx);
- //原子操作 解锁
- cout<<pthread_self() <<":";
- test.prit()
临界区的选择应该尽量小,避免对多线程的并发性产生较大的性能影响
具体代码如下:
点击(此处)折叠或打开
- /*************************************************************************
- > File Name: error.cpp
- > Author: gaopeng QQ:22389860 all right reserved
- > Mail: gaopp_200217@163.com
- > Created Time: Mon 15 May 2017 12:01:33 AM CST
- ************************************************************************/
- #include<iostream>
- #include <pthread.h>
- #include <string.h>
- #define MAXOUT 1000000
- using namespace std;
- static pthread_mutex_t mtx=PTHREAD_MUTEX_INITIALIZER;
- class testc
- {
- private:
- int a;
- public:
- testc()
- {
- a = 1;
- }
- testc& operator++()
- {
- int b = 0;
- b = a;
- a = b+1;
- return *this;
- }
- void prit()
- {
- cout<<a<<endl;
- }
- };
- testc test = test;
- void* testp(void* arg)
- {
- int i = MAXOUT;
- while(i--)
- {
- //原子操作 加锁
- pthread_mutex_lock(&mtx);
- ++test;
- pthread_mutex_unlock(&mtx);
- //原子操作 解锁
- cout<<pthread_self() <<":";
- test.prit();
- }
- }
- int main(void)
- {
- pthread_t tid[3];
- int er;
- int i = 0;
- while(i<3)
- {
- if ((er = pthread_create(tid+i,NULL,testp,NULL) )!=0 )
- {
- strerror(er);
- return -1;
- }
- i++;
- }
- i = 0;
- while(i<3)
- {
- pthread_join(*(tid+i),NULL);
- i++;
- }
- cout<<"last numer: ";
- test.prit();
- }
注意:一个简单类型的i++也不一定是一个原子操作,所以在涉及到并发修改共享变量的时候一定要使用
线程同步手段。
作者微信:

原子
线程
代码
就是
进程
问题
同步
实用
较大
优势
作者
先天
内存
区域
变量
实际
实际上
将对
性能
手段
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术专科实习时间
服务器同步数据到cdn
泰拉瑞亚对萌新比较好的服务器
网络技术管理是什么意思
我的世界电脑版服务器怎么改材质
网络安全行业的理解
万方数据库美术
软件设计和网络技术
西安师院软件开发学费
淮北通信软件开发定制
系统网络安全控件损坏
长沙移动软件开发教程
2017年网络安全部署
解读网络安全主题班会
黑马智能机器人软件开发视频
你愿意做金融软件开发嘛
手机做服务器安装oracle
山东网络安全宣传讲话
卡西欧蓝牙对时服务器
有没有讲网络安全架构的书籍
青岛一念间网络技术部
佛山微商软件开发咨询
开福区软件开发工程师培训
软件开发公司招商专员
软件开发的最终目标
网络技术公司的知识
人人参与网络安全共享
数据库17个技术
软件开发公司需要资质
汉王数据库地址怎么设定