线程间的内存共享问题----你弄懂了吗?
来源:互联网 发布:访客网络限速多少 编辑:程序博客网 时间:2024/06/05 03:42
对线程间共享内存的问题,许多同学是不是都觉得很简单?就是用全局变量来共享码,然而你说的并没有什么卵用…….(^__^)…….
对于线程间内存关系不弄得清清楚楚,很难写好多线程程序。最简练而精准的话来形容线程间共享内存:同一个线程组内线程间共享虚拟内存(自己通过实验总结的,然而不久以后发现一本书中(linux设备驱动程序)早就说过了,我读书好少啊O(∩_∩)O哈哈~)
虚拟内存没弄懂,就看看相关资料吧,今天我给的是两个程序。
1.用一个线程改变另一个线程的栈内存数据
2.用一个线程改变另一个线程申请的堆内存数据
通过这两个例子就能看出,这两个线程间的内存,指针是共享的,怎么简练的描述这个共享呢,两个线程间的有效指针,是可以彼此相互使用,并访问的!
示例1
#include<pthread.h>#include<unistd.h>#include<iostream>#include<syscall.h>#include<string.h>using namespace std;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_COND_INITIALIZER;void * foo(void *pBuffer){ pthread_mutex_lock(&mutex); strcpy((char*)pBuffer,"hello");//主线程的栈数据在此被修改 pthread_mutex_unlock(&mutex); pthread_cond_signal(&cond);}int main(int n, char *arg[]){ char Buffer[20]; //主线程的栈数据 pthread_t pthread_id1; pthread_create(&pthread_id1,NULL,foo,(void *)Buffer); pthread_mutex_lock(&mutex); pthread_cond_wait(&cond,&mutex);//注意pthread_cond_wait()的使用方法 pthread_mutex_unlock(&mutex); cout<<Buffer<<endl;// 输出数据Buffer到标准输出 return 0;}
示例2
#include<pthread.h>#include<unistd.h>#include<iostream>#include<syscall.h>#include<string.h>using namespace std;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_COND_INITIALIZER;void * foo(void *pBuffer){ pthread_mutex_lock(&mutex); strcpy((char*)pBuffer,"hello");//主线程的堆数据在此被修改 pthread_mutex_unlock(&mutex); pthread_cond_signal(&cond);}int main(int n, char *arg[]){ char *Buffer = new char[20]; //主线程的堆数据 pthread_t pthread_id1; pthread_create(&pthread_id1,NULL,foo,(void *)Buffer); pthread_mutex_lock(&mutex); pthread_cond_wait(&cond,&mutex);//注意pthread_cond_wait()的使用方法 pthread_mutex_unlock(&mutex); cout<<Buffer<<endl;// 输出数据Buffer到标准输出 return 0;}
1 0
- 线程间的内存共享问题----你弄懂了吗?
- 构造函数,你真的弄懂了吗?
- alloc、init你弄懂50%了吗?
- alloc、init你弄懂50%了吗?
- alloc、init你弄懂50%了吗
- alloc、init你弄懂50%了吗?
- alloc、init你弄懂50%了吗?
- alloc、init你弄懂50%了吗?
- alloc、init你弄懂50%了吗?
- C语言,你真的弄懂了么?
- 【转】alloc、init你弄懂50%了吗?
- php文件上传,你都弄懂了吗?
- 共享内存的权限问题
- 你注意到COM编程中“STA 单线程套间”的重入问题了吗?
- java需要弄懂的内存分配原理
- 大概弄懂了Java Mail的使用方法
- lock关键字的用法。弄懂了。
- UEditor的图片上传配置问题,终于弄懂了,其实没那么复杂。
- 基础知识整理
- PL/SQL编程
- Nagios + cacti监控系统
- BNU 24258 Journey (LCA)
- 伊斯坦布尔之旅第五天:伊斯兰科学技术历史博物馆和gulhane公园
- 线程间的内存共享问题----你弄懂了吗?
- C++Primer第五版 11.3.1节练习
- datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- 1010. Radix (25)
- TextField 知识点(三)
- fullpage自动执行
- 成员变量初始化顺序-
- 在eclipse中增加配置文件方式
- linux 查看linux 版本