多线程对全局变量的操作
1,窗口初始化的时候调用了线程A,从网页获取了数据字符串“abc“,并对全局变量(g_str)进行了赋值,线程执行完毕;2,点击Button按钮,调用了线程B,也从网页获...
1,窗口初始化的时候调用了线程A,从网页获取了数据 字符串“abc“,并对全局变量(g_str)进行了赋值,线程执行完毕;
2,点击Button按钮,调用了线程B,也从网页获取了数据 字符串"abc",也对全局变量(g_str)进行了赋值,线程执行完毕;
这时 全局变量保存的是什么? 是不是需要做线程同步 赋值才会准确?
因为我后面 要用 OnTimer 调用线程C ,循环获取网页数据,并与 全局变量进行对比,如果一样,就继续循环获取,
如果不一样,就把获取到的数据 重新赋给全局变量,然后下面的操作...
可能是 没赋值成功,或者赋值错了, 线程C 会一直循环更新
求大神解答 展开
2,点击Button按钮,调用了线程B,也从网页获取了数据 字符串"abc",也对全局变量(g_str)进行了赋值,线程执行完毕;
这时 全局变量保存的是什么? 是不是需要做线程同步 赋值才会准确?
因为我后面 要用 OnTimer 调用线程C ,循环获取网页数据,并与 全局变量进行对比,如果一样,就继续循环获取,
如果不一样,就把获取到的数据 重新赋给全局变量,然后下面的操作...
可能是 没赋值成功,或者赋值错了, 线程C 会一直循环更新
求大神解答 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
展开全部
1. 初始化的时候, 如果线程A执行完毕的时候, 线程B还没有运行(相信这个时候C还没有创建), 那么g_str肯定存的是初始化时读取的值.
线程B要按button才调用, 如果一直没有按button, 就一直没有调用. 所以正常情况下你的程序都只有运行线程C, 你可以确认一下:
a) 初始化后线程A, 有没有结束
b) 不按button, g_str的赋值是否正确? 如果不按button都不正确, 那么你的线程C的赋值本身就有问题. 注意看你怎么判断赋值成功, 或者赋值错了? 在什么时间点判断g_str的赋值出错.
2. 你的情况线程B是随机发生的, 与线程C有冲突, 如果只是为了访问不冲突的话, 一般为g_str加个互斥就可以. 对g_str有特殊的使用点要求(对读取的时间点有要求)的话, 才要考虑同步的问题.
线程B要按button才调用, 如果一直没有按button, 就一直没有调用. 所以正常情况下你的程序都只有运行线程C, 你可以确认一下:
a) 初始化后线程A, 有没有结束
b) 不按button, g_str的赋值是否正确? 如果不按button都不正确, 那么你的线程C的赋值本身就有问题. 注意看你怎么判断赋值成功, 或者赋值错了? 在什么时间点判断g_str的赋值出错.
2. 你的情况线程B是随机发生的, 与线程C有冲突, 如果只是为了访问不冲突的话, 一般为g_str加个互斥就可以. 对g_str有特殊的使用点要求(对读取的时间点有要求)的话, 才要考虑同步的问题.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |