Thread 同步的問題 |
|
weber
初階會員 發表:24 回覆:56 積分:26 註冊:2002-03-13 發送簡訊給我 |
各位前輩:
小弟有一個問題請教:
專案裡有一個Main Unit,另有四個 Thread (Thread_a - Thread_d),
Main Unit 要送資料給各個 Thread 處理,資料傳遞的方式要用
Queue 的方式(先進先出), 預計用到四個 Queue (Queue_a - Queue_d),
所以 Queue_a 可能 "同時" 被 Main Uint 及 Thread_a 存取,(Queue_b
- Queue_d 皆有同樣問題),請問要如何處理這個問題,可否給些意見.
|
lee
站長 發表:55 回覆:173 積分:45 註冊:2002-02-27 發送簡訊給我 |
引言: 各位前輩: 小弟有一個問題請教: 專案裡有一個Main Unit,另有四個 Thread (Thread_a - Thread_d), Main Unit 要送資料給各個 Thread 處理,資料傳遞的方式要用 Queue 的方式(先進先出), 預計用到四個 Queue (Queue_a - Queue_d), 所以 Queue_a 可能 "同時" 被 Main Uint 及 Thread_a 存取,(Queue_b - Queue_d 皆有同樣問題),請問要如何處理這個問題,可否給些意見.Queue的話有Head指標與Tail指標,Main Unit存入處理Head, Thread_a處理Tail,應不會衝突, 除非Main Unit與Queue都會同時讀出或同時寫入, 可用一Busy Flag的Boolean變數,用來控制這個Queue是否處理中, 如: var inqueue:boolean; QueuePush() begin while inqueue do application.processmessage; inqueue:=true; // push process inQueue:=false; end; initialization inqueue:=false;以上未測試,只是提出一個想法 ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~ |
weijh
一般會員 發表:0 回覆:3 積分:0 註冊:2002-04-06 發送簡訊給我 |
引言: 各位前輩: 小弟有一個問題請教: 專案裡有一個Main Unit,另有四個 Thread (Thread_a - Thread_d), Main Unit 要送資料給各個 Thread 處理,資料傳遞的方式要用 Queue 的方式(先進先出), 預計用到四個 Queue (Queue_a - Queue_d), 所以 Queue_a 可能 "同時" 被 Main Uint 及 Thread_a 存取,(Queue_b - Queue_d 皆有同樣問題),請問要如何處理這個問題,可否給些意見.使用 Critical Section Mutex Semaphore Event 都可以用來做同步 |
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
引言: Queue的話有Head指標與Tail指標,Main Unit存入處理Head, Thread_a處理Tail,應不會衝突, 除非Main Unit與Queue都會同時讀出或同時寫入, 可用一Busy Flag的Boolean變數,用來控制這個Queue是否處理中, 如:請問在BCB中我要如何寫呢??var inqueue:boolean; QueuePush() begin while inqueue do application.processmessage; inqueue:=true; // push process inQueue:=false; end; initialization inqueue:=false; [/code] 以上未測試,只是提出一個想法 ~~~Delphi K.Top網站總管~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |