关于多Thread |
尚未結案
|
whoawho
一般會員 發表:13 回覆:18 積分:6 註冊:2004-03-16 發送簡訊給我 |
(抱歉无法在主题里面输入太多内容,因为简体的会出现截断)
在使用多Thread时,有些问题不清晰,请教各位。
先决条件:
在主线程(主执行绪)定义一个动态数组A:array of integer;并在启动线程(执行绪)之前setlength(A,2);
多个问题:
一、当启动两个子线程(执行绪)时,第一个线程(执行绪)对A[0]操作,同时,第二个线程(执行绪)对A[1]操作,是否不需要Synchronize等类似操作?就我测试的结果来看,好像没有问题。 二、当两个子线程(子执行绪)已经启动,主线程(主执行绪)这时去更改A的下标Setlength(A,3),必然出现错误,那么,该怎么在主线程中Synchronize? 请别见怪问这么低级的问题,对线程(执行绪)了解很少,所以,最好能给出一个简洁的代码示范。 先多谢各位了。
|
bbtw
一般會員 發表:2 回覆:31 積分:16 註冊:2003-07-11 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
一、当启动两个子线程(执行绪)时,第一个线程(执行绪)对A[0]操作,同时,第二个线程(执行绪)对A[1]操作,是否不需要Synchronize等类似操作?就我测试的结果来看,好像没有问题。 不用 二、当两个子线程(子执行绪)已经启动,主线程(主执行绪)这时去更改A的下标Setlength(A,3),必然出现错误,那么,该怎么在主线程中Synchronize? Synchronize不能傳參數是不少設計師的困擾,
最直接方法是用其他的變數來做到傳參數的作用。
Exp:
在你定義的TThread中private設兩個參數,暗存Setlength的A還有3
然後再包裝一個新的Setlength(void)就可以傳給Synchronize了
Try it!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |