两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出______是可能的?

void foo(){
    a=a+1;
    printf("%d ",a);
}
正确答案: A B C D   
3 2
2 3
3 3
2 2

解析:
A:3, 2
y先执行++a,a为2;
y再执行printf,a入栈,在打印到终端之前切换到x
x执行++a,a为3;
x执行printf,输出3;再切换到y
y执行打印,输出2

B:2 3
x先执行++a,a为2;
x再执行printf,输出2;切换到y
y执行++a,a为3;
y执行printf,输出3;

C:3 3
x先执行++a,a为2;切换到y
y执行++a,a为3;
y执行printf,输出3;切换到x
x执行printf,输出3

D:2 2
类似C,a的初始值为0即可

这里关键有两点:
(1)两个线程可随时被抢占
(2)++a和printf不是原子指令,可随时被打断;特别注意函数printf,a作为参数压栈后,a再变化则不会影响输出(printf实际打印的是压栈的参数,是值拷贝的栈变量)

两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出______是可能的?相关推荐

  1. 关于Spring容器中定时器到时执行会出现两个线程同时执行的问题

    最近公司有一个小需求,是需要定时去从某一个视频供应商下载视频文件,问题很简单,直接使用quartz,编写相应的定时器代码,同时配置相应的定时器时间,但是在定时执行之后会出现两个线程同时执行定时任务的问 ...

  2. java中thread实例_Java多线程并发执行demo代码实例

    主类:MultiThread,执行并发类 package java8test; import java.util.ArrayList; import java.util.List; import ja ...

  3. python两个线程交替执行_python 实现两个线程交替执行

    我就废话不多说,直接看代码吧! import threading import time def a(): while True: lockb.acquire() print('a') locka.r ...

  4. java两个线程交替执行

    比如有一个数,需要两个线程对其交替操作,代码如下 public class ThreadDemo {public static void main(String[] args) {Message me ...

  5. 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...

    方法一:传统的线程方法import org.apache.log4j.Logger;/*** 两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象.<br/>* 锁是上 ...

  6. Java案例:两个线程交替执行

    目录 一.准备工作 二.执行任务 任务1.两个线程,一个打印A到Z,一个打印1到26,交替执行

  7. halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...

    如题,这个问题本人已经纠结了快三个工作日了.本人不同WinFrom程序一起动就会开启10个线程,并发对10张图片进行算法处理,问题是只要程序一起动就会报"尝试读取或写入受保护的内存.这通常指 ...

  8. js执行php代码并返回数据,js调用php_js调用php并输出内容

    摘要 腾兴网为您分享:js调用php并输出内容,相机美颜,沃尔玛,微商助手,完美志愿等软件知识,以及钱急送app,mt4,国家自然灾害灾情,猪八戒兼职网站,成都市安全app,office2003,36 ...

  9. 进程有一个全局变量 i,还有有两个线程。i++ 在两个线程里边分别执行 100 次,能得到的最大值和最小值分别是多少?

    转自https://blog.csdn.net/biubiu741/article/details/77990592 多核CPU最小值为2,最大值200. 假设两个线程的执行步骤如下: 1. 线程A执 ...

最新文章

  1. oracle表空间更改用户,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...
  2. 7-5 二分法求多项式单根 (20分)
  3. [bzoj3673/3674可持久化并查集加强版]
  4. 小型蜂鸣器内部驱动电路
  5. 使用Spring Initializer快速创建Spring Boot项目
  6. C# 两时间,时间间隔
  7. VS2013 生成时复制文件或目录到指定目录
  8. 学习Spring Boot:(七)集成Mybatis
  9. Remote URL test failed: protocol ‘Remote URL test failed: Authentication failed for,不能clone,push和pul
  10. 正交试验设计例题及答案_正交试验设计中的方差分析-例题分析
  11. Word设置子标题跟随上级标题变化
  12. Elasticsearch 的内存优化
  13. [4G5G专题-8]:RRU 峰均比降低技术CFR(波峰系数削减)
  14. 坐标中国|中国速度,挑战极限驱动发展“快车”
  15. MAXIMO工作流待办邮件提醒配置
  16. matlab 三角函数 和差化积,三角函数中的和差化积公式编辑方法
  17. TypeError: Descriptors cannot not be created directly.
  18. 动态主机配置协议(DHCP)
  19. diy写字机器人_Mini Telegraph开源电报机创客DIY机械臂写字机器人小贱钟表白
  20. 最邻近差值算法(nearest)和双线性插值算法(bilinear)

热门文章

  1. Ajax实现局部数据交互的一个简单实例
  2. 欢迎关注我的微信公众号 “我是一个假的程序猿”
  3. python--异常处理
  4. Python进阶03 模块
  5. 清空sqlserver当前日志信息!
  6. 基于Case的MIS系统 - 总账模块
  7. 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
  8. Codeforces Round #160 (Div. 2) B - Roma and Changing Signs
  9. runc容器逃逸漏洞最强后续:应对之策汇总与热点疑问解答
  10. “黄背心”运动持续进行 马克龙发长信呼吁沟通