关于gdk_threads_add_idle函数的线程安全问题解释
在《对于gtk多线程编程的一些思考以及实践归纳系列(1)》
对于gtk多线程编程的一些思考以及实践归纳系列(1)_GT19930910的博客-CSDN博客
中提到gdk_threads_add_idle函数的线程安全问题,当时测试情况是错误的。我们在主线程中循环将一个全局变量g_num从0++一万次,之后在副线程中采用gdk_threads_add_idle函数将相同的全局变量g_num--一万次,之前测试以为最终结果就是在第二个完成任务的地方输出g_num得到的结果肯定是0,但是结果确实不是0,所以任务gdk_threads_add_idle不是线程安全的,但是这个函数官方的解释是在线程中调用,刷新主线程中的界面,其原理是等待主线程空闲的时候才会执行,那怎么可能和主线程的任务抢全局变量呢,所以,现在我们来指出之前测试错误的地方。
其实很简单,所谓空闲任务,必须要在gtk_main之后,主线程才算空闲,gdk_threads_add_idle函数中的内容才会执行,所以,g_num如果在gtk_main之后打印一遍,那结果必然是0,是毋庸置疑的,所以这里面就清楚了,在副线程中通过gdk_threads_add_idle起来的任务如果主线程还在操作或者还未进入gtk_main,是不会执行的。所以绝对是线程安全的!!!
此处解释之前错误,有问题大家随时可以和我沟通~欢迎一起探讨!
关于gdk_threads_add_idle函数的线程安全问题解释相关推荐
- 闭关修炼(二)线程安全问题
?回归初心 文章目录 什么是线程安全问题? 局部变量会发生线程安全问题吗? 什么是线程之间的同步? 线程不安全例子 线程安全问题有什么解决办法? 使用同步代码块解决线程安全问题 什么地方需要加锁? 线 ...
- Win32线程安全问题.同步函数
线程安全问题.同步函数 一丶简介什么是线程安全 通过上面几讲.我们知道了线程怎么创建.线程切换的原理(CONTEXT结构) 每个线程在切换的时候都有自己的堆栈. 但是这样会有安全问题. 为什么? 我 ...
- 单例模式“双重检查锁定Double-Checked Locking”线程安全问题
几篇合集. 1 单例模式"双重检查锁定Double-Checked Locking"线程安全问题 https://blog.csdn.net/wabiaozia/article/d ...
- 关于 智能指针 的线程安全问题
先说结论,智能指针都是非线程安全的. 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include ...
- iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)
2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...
- 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
微信公众号:Zhongger 我是Zhongger,一个在互联网行业摸鱼写代码的打工人! 关注我,了解更多你不知道的[Java后端]打工技巧.职场经验等- 上一期,讲到了关于线程死锁.用户进程.用户线 ...
- 面试:从volatile说到i++的线程安全问题
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者|ZimZz 来源|https://www.cnbl ...
- 从volatile说到i++的线程安全问题
点击上方 好好学java ,选择 星标 公众号 重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客 ...
- 从 volatile 说到 i++ 的线程安全问题
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 来源 ...
最新文章
- intellij idea建立maven项目
- python celery多worker、多队列、定时任务
- 通过正则表达式分句提取中文内容
- java 设计模式学习笔记十 bridge桥模式
- 输入一个字母,转大小写
- rsem比对_RSEM方法比对和表达量计算
- jquery和php上传文件进度条,jQuery实现文件上传进度条特效_jquery
- 14年,50%市场份额,一家中国公司何以在丹麦成功?
- telnet 远程登陆
- c++代码打印爱心图(适用初学者)
- vscode设置字体颜色
- Python基础篇:Python的数据结构
- HDU-3533 Escape
- cinta作业6:拉格朗日定理
- RevitAPI: 当前视图为透视图的时候IdlingEvent不会被触发
- JavaScript时间格式化
- tomcat tomcat配置 项目部署tomcat三种方式
- htc解锁后root,htc的手机怎么解锁
- centos7编译安装mysql5.7
- Android应用开发用Kotlin还是Java 好?