在《对于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函数的线程安全问题解释相关推荐

  1. 闭关修炼(二)线程安全问题

    ?回归初心 文章目录 什么是线程安全问题? 局部变量会发生线程安全问题吗? 什么是线程之间的同步? 线程不安全例子 线程安全问题有什么解决办法? 使用同步代码块解决线程安全问题 什么地方需要加锁? 线 ...

  2. Win32线程安全问题.同步函数

    线程安全问题.同步函数 一丶简介什么是线程安全 通过上面几讲.我们知道了线程怎么创建.线程切换的原理(CONTEXT结构) 每个线程在切换的时候都有自己的堆栈. 但是这样会有安全问题. 为什么?  我 ...

  3. 单例模式“双重检查锁定Double-Checked Locking”线程安全问题

    几篇合集. 1 单例模式"双重检查锁定Double-Checked Locking"线程安全问题 https://blog.csdn.net/wabiaozia/article/d ...

  4. 关于 智能指针 的线程安全问题

    先说结论,智能指针都是非线程安全的. 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include ...

  5. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  6. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...

    微信公众号:Zhongger 我是Zhongger,一个在互联网行业摸鱼写代码的打工人! 关注我,了解更多你不知道的[Java后端]打工技巧.职场经验等- 上一期,讲到了关于线程死锁.用户进程.用户线 ...

  7. 面试:从volatile说到i++的线程安全问题

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者|ZimZz 来源|https://www.cnbl ...

  8. 从volatile说到i++的线程安全问题

    点击上方 好好学java ,选择 星标 公众号 重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客 ...

  9. 从 volatile 说到 i++ 的线程安全问题

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 来源 ...

最新文章

  1. intellij idea建立maven项目
  2. python celery多worker、多队列、定时任务
  3. 通过正则表达式分句提取中文内容
  4. java 设计模式学习笔记十 bridge桥模式
  5. 输入一个字母,转大小写
  6. rsem比对_RSEM方法比对和表达量计算
  7. jquery和php上传文件进度条,jQuery实现文件上传进度条特效_jquery
  8. 14年,50%市场份额,一家中国公司何以在丹麦成功?
  9. telnet 远程登陆
  10. c++代码打印爱心图(适用初学者)
  11. vscode设置字体颜色
  12. Python基础篇:Python的数据结构
  13. HDU-3533 Escape
  14. cinta作业6:拉格朗日定理
  15. RevitAPI: 当前视图为透视图的时候IdlingEvent不会被触发
  16. JavaScript时间格式化
  17. tomcat tomcat配置 项目部署tomcat三种方式
  18. htc解锁后root,htc的手机怎么解锁
  19. centos7编译安装mysql5.7
  20. Android应用开发用Kotlin还是Java 好?

热门文章

  1. 身心健康类应用潮汐App完成近千万Pre-A轮融资,熊猫资本投资...
  2. (转)程序员和美工的配合问题
  3. android开发实现头像上传功能
  4. java lftp_lftp使用详解
  5. 智能驾驶新一轮芯片争夺战开启
  6. 《杨澜访谈录》逐风者第三季 |数字技术把教育引向未来
  7. 小程序中计算距离某个节日还剩多少天
  8. Linux中Python应用CPU占用高问题排查
  9. 【江西省研究生数学建模竞赛】题目之三 植物的多样性 建模方案及参考文献
  10. 基于opencv的行人检测(支持图片,视频)