Fzlcccccccccccccclp 2021-12-22 17:45 采纳率: 100%
浏览 100
已结题

MFC一个线程循环更新变量,一个线程循环读取变量,读取变量读不出更新后的值,求解~

我在MFC中定义一个变量number为空,A线程中循环给变量赋值,另一个线程B在死循环不断打印变量number,但一直都是空,该怎么处理才能得到赋值后的值。

void CTestWeb::OnAbcdefg() 
{
 AfxBeginThread(ThreadProcA, NULL);      // 启动线程A
 AfxBeginThread(ThreadProcB, NULL);      // 启动线程B
}


UINT ThreadProcA(LPVOID pParam)
{
  int i=0;
  while (1){
    number = i;
    i++;
  }

 return 0;
}


UINT ThreadProcB(LPVOID pParam)
{
 while (1)
    {
        if (number!= "")
        {
            MessageBox("有值了");
        }
        else {
            MessageBox("无");
        }
    }
 
 return 0;
}
然后一直返回无 应该怎么处理才能让线程B 循环能够获取到线程A 赋值后的number
我尝试过加临界区 两个线程都对 操作number的地方使用临界区锁上,但是线程都是死循环 等待不到结果 没有返回貌似
求解

img

  • 写回答

1条回答 默认 最新

  • 小宁子想不到 2021-12-22 18:19
    关注

    可以试试看把那个变量定义成static的类成员,也可以去看看单例模式

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 专家修改了标签 8月1日
  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料