作者Gawain0416 (Gawain)
看板C_Sharp
標題[問題] 關於thread寫關於像遊戲大廳的方式
時間Tue Nov 3 17:05:22 2009
大家好。
請問一下,現在程式狀況是:
我有一個socket server,及client程式。
client已經連入,之後會在遊戲大廳上"開房間"
所以會有兩個thread
一、開房間的人
二、進入房間的人
之後server會像兩個人發送訊息,告知服務…等
我在server是寫
while (true)
{
ListenClient lc = new ListenClient(tcpListener);
//ListenClient是我定義的物件
ThreadStart serverThreadStart = new ThreadStart(lc.ServerThreadProc);
//ServerThreadProc也是定義要執行的method
Thread serverthread = new Thread(serverThreadStart);
serverthread.Start();
}
目前遇到問題是:
我只能在ListenClient裡取得自己的"Thread.CurrentThread.ManagedThreadId"
但我確不知道要怎麼去控制那個id的執行緒
小弟也有想過ThreadPool的方式,
如:
while (true)
{
ListenClient lc = new ListenClient(tcpListener);
ThreadPool.QueueUserWorkItem(lc.ServerThreadProc, i);
i++;
}
可是也找不到可以控制其中一條執行緒的方法?
看了objectBrowser,和一些thread的資料
可是還是不知道要怎麼解?
希望大大可以幫忙解答一下,
謝謝喔!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.220.144
1F:→ remmurds:何必那麼複雜呢?自訂一個class表示房間 然後用陣列儲存 11/03 19:40
2F:→ remmurds:每個已經建立的房間 讓所有的client thread去存取 11/03 19:41
3F:→ remmurds:只是存取時要記得使用lock將SyncRoot鎖定 處理同步化問題 11/03 19:42
4F:→ Gawain0416:小弟試試,謝謝! 11/03 22:40