一、(LINUX 线程同步) 引入
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,原创水平有限有误请指出线程相比进程有着先天的数据共享的优势,如下图,线程共享了进程除栈区以外的所有内存区域如下图所示:但是这种共享有时候也会带来问题,简单的考虑如下C++代码:点击(此处)折叠或打开{
千家信息网最后更新 2026年11月01日一、(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安全错误
数据库的锁怎样保障安全
山东特亿宝互联网科技有限公司
蓝思科技飞鸽互联网
涨乐互联网科技
金融科技还是互联网
科技服务与互联网
安徽鑫晟辉互联网科技
美国互联网黑科技
伴你行互联网科技有限公司
互联网科技英文翻译
美国互联网前沿科技
深圳前海聚择互联网科技有限公司
互联网科技热点资讯
中国航天科技大学国际工业互联网
互联网科技人工智能实验室
996高科技互联网公司
伍佰万互联网科技怎么赚钱
广州百诚互联网科技有限公司官网
广东鹅鹅鹅互联网科技有限公司
广西泛欧互联网科技有限公司
数字科技和互联网金融哪个好
互联网巨头反垄断金融科技
易互联网科技有限公司
碳银互联网科技
壹账通互联网科技
蓝色互联网科技
健康食品互联网创新科技园项目
企晟互联网信息科技有限公司
北京互联网科技类企业分布
马化腾互联网科技教学
互联网科技创新创业项目