多线程对全局变量的操作

1,窗口初始化的时候调用了线程A,从网页获取了数据字符串“abc“,并对全局变量(g_str)进行了赋值,线程执行完毕;2,点击Button按钮,调用了线程B,也从网页获... 1,窗口初始化的时候调用了线程A,从网页获取了数据 字符串“abc“,并对全局变量(g_str)进行了赋值,线程执行完毕;
2,点击Button按钮,调用了线程B,也从网页获取了数据 字符串"abc",也对全局变量(g_str)进行了赋值,线程执行完毕;
这时 全局变量保存的是什么? 是不是需要做线程同步 赋值才会准确?

因为我后面 要用 OnTimer 调用线程C ,循环获取网页数据,并与 全局变量进行对比,如果一样,就继续循环获取,
如果不一样,就把获取到的数据 重新赋给全局变量,然后下面的操作...

可能是 没赋值成功,或者赋值错了, 线程C 会一直循环更新

求大神解答
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
sinside8888
推荐于2016-01-19 · TA获得超过431个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:134万
展开全部
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有特殊的使用点要求(对读取的时间点有要求)的话, 才要考虑同步的问题.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式