搜索
查看: 9542|回复: 10

如何申明子线程中的全局变量?

    [复制链接]

32

主题

112

帖子

593

积分

三级会员

Rank: 4

积分
593
发表于 2011-4-12 02:57:36 | 显示全部楼层 |阅读模式
如何在子线程中申明一个全局变量来供子线程中的子程序使用?
虽然笑着面对所有事,笑容的背后依然......
回复

使用道具 举报

65

主题

953

帖子

5036

积分

荣誉会员

Rank: 8Rank: 8

积分
5036
发表于 2011-4-12 08:15:59 | 显示全部楼层

thread.set("a","aaaaaaaaaaaaaaaaaaaaaaaaaaaa");

thread.set("a","aaaaaaaaaaaaaaaaaaaaaaaaaaaa");


点评

上面打了两个错字,太鸡动了。。。意味着我要从外部导入数据就可以直接用thread.set来配合thread.lock区保存数据方便读取了  发表于 2011-4-12 16:06
谢谢楼主和你的回复,让我突然明白,然后thread.set就相当于我们平时的var ,顿悟啊  发表于 2011-4-12 16:04
aaa
回复

使用道具 举报

51

主题

265

帖子

1548

积分

四级会员

Rank: 6Rank: 6

积分
1548
发表于 2011-4-12 08:49:19 | 显示全部楼层

即使是全局变量子线程也读不到,要通过2楼这样的方法来共享。

即使是全局变量子线程也读不到,要通过2楼这样的方法来共享。
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2011-4-12 09:38:04 | 显示全部楼层

难道多线程不可以设置参数么? 再说了你用的是多线程 你明白多线程是什么东西么? 他们直接可以说几乎 没有任何联系.

难道多线程不可以设置参数么?
再说了你用的是多线程 你明白多线程是什么东西么?
他们直接可以说几乎 没有任何联系.
我是菜鸟...
回复

使用道具 举报

32

主题

112

帖子

593

积分

三级会员

Rank: 4

积分
593
 楼主| 发表于 2011-4-12 11:35:10 | 显示全部楼层

[b]回复 [url=http://bbs.aardio.com/forum.php?mod=redirect&goto=findpost&pid=9940&p

回复 落伍者 的帖子

import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; text="aardio Form";right=349;bottom=249 )
winform.add(
button={ bottom=135;right=246;left=118;top=58;font=LOGFONT( name="宋体";h=-12 );z=1;text="button";cls="button" }
)
/*}}*/
winform.button.oncommand = function(id,event){
        hander=thread.create(test1,test2);
        win.msgbox("主线完成","aardio");
}

test1=function(){
        import win.ui;
        import win;
        var hanshu=10 ;
        win.msgbox("线程1:测试值为"++hanshu,"aardio");
        test2();
}

test2=function(){
        win.msgbox("线程1子程序:测试值为"++hanshu,"aardio")
}

winform.show()
win.loopMessage();

那麻烦您告诉我下咯....这个在子线程中怎么才能把test2里面的正常是使用?
虽然笑着面对所有事,笑容的背后依然......
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2011-4-12 12:05:40 | 显示全部楼层

test2 是主线程的函数 并不是线程test1的函数 你在test1线程调用主线程的函数 明显是不行的! test1 没有设置形参 你给他搞个实参有

test2 是主线程的函数  并不是线程test1的函数
你在test1线程调用主线程的函数 明显是不行的!

test1 没有设置形参 你给他搞个实参有什么意义?
况且你这个参数本身还是个假的!
我是菜鸟...
回复

使用道具 举报

51

主题

265

帖子

1548

积分

四级会员

Rank: 6Rank: 6

积分
1548
发表于 2011-4-12 16:55:12 | 显示全部楼层

test1=function([size=5][color=#ff0000][b]ff[/b][/color][/size]){ import

test1=function(ff){
        import win.ui;
        import win;
        var hanshu=10 ;
        win.msgbox("线程1:测试值为"++hanshu,"aardio");
        ff();
}

点评

真棒: 5.0
真棒: 5
谢谢...终于知道格式是怎么样儿的了...这个死落伍就是不写出来..害我弄半天.  发表于 2011-4-12 17:33
回复

使用道具 举报

186

主题

2542

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2011-4-12 17:52:44 | 显示全部楼层

线程之间应当通过参数、thread.get等函数交换数据,以保证线程安全。 可以使用线程共享表,下面是示例: [align=left][font=新宋体]

线程之间应当通过参数、thread.get等函数交换数据,以保证线程安全。
可以使用线程共享表,下面是示例:

io.open()

import thread.table;
var tab = thread.table("线程共享表名称",true/*清空*/ )

handle = thread.create(
   
function(){
        
import thread.table;
        tab = thread.table(
"线程共享表名称")
        tab.push(
"线程ID:" + thread.getId() )
    }
)

handle2 = thread.create(
   
function(){
        
import thread.table;
        tab = thread.table(
"线程共享表名称")
        tab.a = 12;
//线程共享表也可以象普通表一样访问
        tab.b = 34;
        tab.c = 56;
        
        tab.push(
"线程ID:" + thread.getId() )
    }
)

thread.waitClose( handle,handle2)

io.print( tab.pop(2) )
io.print( tab.a );
//线程共享表也可以象普通表一样访问
io.print("--------------")

//遍历共享表
for( k,v in tab.each() ){
    io.print(k,v)
}
回复

使用道具 举报

0

主题

6

帖子

42

积分

新手入门

Rank: 1

积分
42
发表于 2018-6-29 14:36:58 | 显示全部楼层
为什么共享表遍历的结果输出顺序不是a,b,c,而是a,c,b ?
回复

使用道具 举报

186

主题

2542

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-6-29 14:51:45 | 显示全部楼层
walkyman 发表于 2018-6-29 14:36
为什么共享表遍历的结果输出顺序不是a,b,c,而是a,c,b ?

至少基础语法先去看一下,数组才能排序。
回复

使用道具 举报

0

主题

5

帖子

37

积分

新手入门

Rank: 1

积分
37
发表于 2018-8-3 16:48:03 | 显示全部楼层
学习了,真是不错啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-9-22 11:37 , Processed in 0.062500 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表