[問題] Thread中的物件變數問題
再次打擾各位先進了。
剛剛在測試之前寫的MultiThread Server時遇到了變數數值上的問題,
在這邊跟各位請教一下..
我的Server開啟之後,TCPListener會不斷的等待連線,
而當有連線進來時,Server會先New一個"連線處理物件"後,
再New一個Thread將這個"連線處理物件"丟進去。
這部份大概的程式碼如下:
...
while (true)
{
while (!mServer.Pending()) //TcpListener mServer
{
Thread.Sleep(1000);
}
connObject cObj = new connObject(); //建立新的連線處理物件
cObj.threadListener = mServer;
Thread newThread = new Thread
(new ThreadStart(cObj.ServerThreadProc));
newThread.Start();
}
當有連線進來時,應該是確實有Thread被建立的。
而我一直以為New出來並丟進Thread的"連線處理物件"是各自分開的。
但是剛剛在測試兩個Client同時連線並動作時發現,
應該是B的"連線處理物件"中的變數數值竟然是 A的"連線處理物件中"的變數數值。
這代表了A跟B同時改變變數時,其實改變到的是同一個變數,
而非各自的連線所建立的"連線處理物件"中的變數..
不知道有沒有熟悉這部份的先進能夠指點一下,
是我指定的方式有誤? 還是這樣建立Thread的方式有問題呢?
謝謝各位 >"<||
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.125.83.70
推
05/08 07:52, , 1F
05/08 07:52, 1F
→
05/08 13:13, , 2F
05/08 13:13, 2F
→
05/08 13:13, , 3F
05/08 13:13, 3F
→
05/08 13:14, , 4F
05/08 13:14, 4F
推
05/09 22:14, , 5F
05/09 22:14, 5F