線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:811
推到 Plurk!
推到 Facebook!

关于多Thread

尚未結案
whoawho
一般會員


發表:13
回覆:18
積分:6
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-29 18:18:55 IP:202.103.xxx.xxx 未訂閱
(抱歉无法在主题里面输入太多内容,因为简体的会出现截断) 在使用多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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-30 08:39:19 IP:61.71.xxx.xxx 未訂閱
建議你回歸到物件的資料保存及安全上. 當有一個特殊的變數必須由多個程式公用時, 將他轉為物件,並設計安全的存取動作是比較好的方式. 如果不想用物件, 起碼設計基礎的存取及鎖定功能讓其他程序不至誤用, 例如: A的存取都必須經過ReadA, WriteA, Read/Write 中間可以設計範圍檢查,或是否在使用中的檢查.
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-08 12:52:23 IP:140.112.xxx.xxx 未訂閱
一、当启动两个子线程(执行绪)时,第一个线程(执行绪)对A[0]操作,同时,第二个线程(执行绪)对A[1]操作,是否不需要Synchronize等类似操作?就我测试的结果来看,好像没有问题。 不用 二、当两个子线程(子执行绪)已经启动,主线程(主执行绪)这时去更改A的下标Setlength(A,3),必然出现错误,那么,该怎么在主线程中Synchronize? Synchronize不能傳參數是不少設計師的困擾, 最直接方法是用其他的變數來做到傳參數的作用。 Exp: 在你定義的TThread中private設兩個參數,暗存Setlength的A還有3 然後再包裝一個新的Setlength(void)就可以傳給Synchronize了 Try it!
系統時間:2024-05-09 7:07:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!