ChrisXHF 2023-02-15 20:39 采纳率: 66.7%
浏览 20
已结题

关于多线程的变量的值的问题

while(1){

    cout<<tickCountA<<"--"<<previous_tickCountA<<endl;
    if(tickCountA == previous_tickCountA )
        continue;
            cout<<"success!"<<endl;                        
    previous_tickCountA = tickCountA;

}
以上是线程A做的事,线程B负责每隔一秒使tickCountA++,我的原意是想每次线程B改变了tickcount的值的时候线程A能输出一个success,但实际运行结果发现,线程A从来不输出success,但是第一句的输出结果却是tickCountA和previous_tickCountA的值永远保持了一致,,也就说最后一句赋值语句确实运行了,那为什么success从来不输出呢,实在是不懂,求解惑

  • 写回答

3条回答 默认 最新

  • m0_72850872 2023-02-15 21:01
    关注

    可能是因为tickCountA和previous_tickCountA的值在线程A运行的时候没有发生变化,所以if语句一直不满足,所以success从来不输出。可以尝试在线程A中加入一个sleep函数,让线程A每次运行的时候都有一定的延迟,这样就可以让tickCountA和previous_tickCountA的值有机会发生变化,从而输出success。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月17日
  • 创建了问题 2月15日

悬赏问题

  • ¥20 有偿,学生成绩信息管理系统
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列