搜索
aardio官方社区 门户 查看主题

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

发布者: 弗兰 | 发布时间: 2011-4-12 02:57| 查看数: 9133| 评论数: 9|帖子模式

如何在子线程中申明一个全局变量来供子线程中的子程序使用?

最新评论

低调点 发表于 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
o00viw 发表于 2011-4-12 08:49:19

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

即使是全局变量子线程也读不到,要通过2楼这样的方法来共享。
落伍者 发表于 2011-4-12 09:38:04

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

难道多线程不可以设置参数么?
再说了你用的是多线程 你明白多线程是什么东西么?
他们直接可以说几乎 没有任何联系.
弗兰 发表于 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里面的正常是使用?
落伍者 发表于 2011-4-12 12:05:40

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

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

test1 没有设置形参 你给他搞个实参有什么意义?
况且你这个参数本身还是个假的!
o00viw 发表于 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
Jacen.He 发表于 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)
}
walkyman 发表于 2018-6-29 14:36:58
为什么共享表遍历的结果输出顺序不是a,b,c,而是a,c,b ?
Jacen.He 发表于 2018-6-29 14:51:45
walkyman 发表于 2018-6-29 14:36
为什么共享表遍历的结果输出顺序不是a,b,c,而是a,c,b ?

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

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

GMT+8, 2018-7-18 09:04 , Processed in 0.062501 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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