TC官方合作论坛

标题: 一个线程问题 [打印本页]

作者: caijuan2013    时间: 2014-3-14 15:15
标题: 一个线程问题
    ArrLen=2
   for(i=0;i<ArrLen;i++)
        
        CZT.ga_SubThdID[i]=thread.beginthread("SubThread.SubThreadStart",i)

        help.sleep(5000)
    endfor

为什么这样写这两个线程运行会5秒后一起同时启动,而不是先启动一个,然后5秒后启动后一个?

子线程函数很简单,就是循环60次,输出索引和一个变量而已
namespace SubThread

    function SubThreadStart(RIndex)
        
        SubThdCnt=0,SubThdMax=60
        while(true && SubThdCnt< SubThdMax)
            SubThdCnt++
            help.sleep(1000)
            
            edit.settext("Edit_Thread" & RIndex,SubThdCnt & "--" & CZT.ga_TaskKind[RIndex])
            
        endwhile
        
        return true
    endfunction
   
endnamespace




作者: caijuan2013    时间: 2014-3-14 15:17
另外,程序运行后,显示处理的结果没问题
作者: zxw445    时间: 2014-3-14 15:44
咳,英文看不懂。所以不解答了。等待下面大神来临。
作者: caijuan2013    时间: 2014-3-14 17:15
    ArrLen=2
   for(i=0;i<ArrLen;i++)
        
        CZT.ga_SubThdID[i]=thread.beginthread("SubThread.SubThreadStart",i)

        help.sleep(5000)
    endfor

貌似是循环建立线程的这个代码不能放在窗体按钮的点击事件里面,
我试了下,先在窗体按钮点击事件里开启一个单独的线程A ,然后再把上面的代码移到线程A里, 这样产生的两个线程就可以按程序设计的错开执行了。


作者: 今非    时间: 2014-3-14 18:07
请采纳如果我的回答帮助到了你 !

  1. //--说明:你在线程里面的第一句代码 看看调试输出就行
  2. 调试输出(系统.获取毫秒()&","&i)
复制代码


温馨提示8 : TC官方VIP群也是一个交流的好地方 , 里面有很多大神
作者: caijuan2013    时间: 2014-3-14 18:49
没懂

调试输出(系统.获取毫秒()&","&i)

是让我看看两个线程启动的准确时间吗?
作者: 续花丶    时间: 2014-3-14 20:23
caijuan2013 发表于 2014-3-14 18:49
没懂

调试输出(系统.获取毫秒()&","&i)

代码没看出问题呢,应该是等了5秒吧。




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1