黑松山资源网 Design By www.paidiu.com
Linux C中多线程与volatile变量
volatile 修饰的变量表示改变量的值是易变的,编译器不对其进行优化,访问该变量的时候不会从寄存器读取, 而是直接从内存读取变量。
在多线程环境下,每个线程都有一个独立的寄存器,用于保存当前执行的指令。假设我们定义了一个全局变量,每个线程都会访问这个全局变量,这时候线程的寄存器可能会存储全量变量的当前值用于后续的访问。当某个线程修改了全局变量的值时,系统会立即更新该线程寄存器中对应的值,其他线程并不知道这个全局变量已经修改,可能还是从寄存器中获取这个变量的值,这个时候就会存在不一致的情况。
针对多线程访问共享变量而且变量还会经常变化的情况,利用volatile类型修饰变量是一个很好的选择,如volatile int size = 10; 当多线程访问这个变量时,它会直接从size对应的地址访问,而不会从线程对应的寄存器访问,这样就不会出现前面说到的
同一变量的值在多个线程之间不一致的情况。
下面贴出一个多线程环境下使用 volatile 变量的例子:
#include <stdio.h> #include <stdlib.h> #include <pthread.h> /* volatile变量控制线程的运行与结束 */ static volatile int do_run_thread = 1; static pthread_t thread_tid; static void *work_thread(void *arg) { while (do_run_thread) { printf("thread is running...\n"); sleep(1); } printf("stop thread done!\n"); } static void start_thread() { printf("start thread...\n"); pthread_create(&thread_tid, NULL, work_thread, NULL); } static void stop_thread() { printf("stop thread...\n"); do_run_thread = 0; pthread_join(thread_tid, NULL); /* 等待线程结束 */ } int main() { start_thread(); sleep(5); stop_thread(); return 0; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年10月10日
2024年10月10日
- 马小倩《落花A2HD3-HQCD》头版限量[低速原抓WAV+CUE]
- 343前动画师怒喷343糟糕管理层:纯纯的毒瘤
- 《生化2RE》12.31苹果Mac平台发售:现已登陆商店
- 《使命召唤21:黑色行动6》实机发售预告!体验史诗电影单人战役
- 《张雨生 不朽的歌声 黑胶2CD》[WAV/分轨][860MB]
- 《赵传 你过得还好吗 2017》[FLAC/分轨][350MB]
- 《流行新歌告诉你 36首经典金曲 2CD》[WAV+CUE][1GB]
- 王宏伟.2012-用我的心握你的手【太平洋影音】【WAV+CUE】
- 谢安琪.2006-K.SUS.2(EP)(2015金碟复刻版)【BanBanMusic】【WAV+CUE】
- 谢安琪.2005-KAY.ONE(2015金碟复刻版)【BanBanMusic】【WAV+CUE】
- 《勇敢小骑士》评测:是永无乡,亦是梦幻岛
- 《哈利波特:魁地奇锦标赛》:我们魔法学院自己的足球赛
- 《冰汽时代2》评测:看来这一切都是值得的
- 《蛋仔派对》翻糖壳壳皮肤图鉴
- 《蛋仔派对》斑马乐乐皮肤图鉴