伊莉討論區

標題: Thread的問題 [打印本頁]

作者: aaa33358    時間: 2018-3-12 12:33 AM     標題: Thread的問題

小弟最近練習使用Thread跑一些function,因為有一些function裡會有更改變數(int or string)動作
結果導致不同的Thread會相互影響該變數的問題,而小弟也有使用lock來鎖定變數,但是變數的動作範圍太大
以致造成使用Thread也不會提升程式速度
所以想請問大大們有沒有甚麼好方式可提供,讓function內的變數可以獨立出來,感激不盡。
(小弟也又試過 int X = new int,可是沒甚麼用,還是會互相影響)
作者: Sharr    時間: 2018-3-12 11:31 PM

不太懂意思...
自己的程式需求是 要同步 or 非同步?..
你指的是, 有個shared resource. 幾乎是每個地方都用到, 所以導致每個thread 都在搶shared resource,  有做lock resource, 但thread反而在排隊, 所以效能沒有提升到?
如果是這樣, 那檢查ㄧ下是否有必要把這shared resource真的從頭到尾共用lock住....

還是你的問題是.. 這個變數/物件..沒有要一改所有的thread內容都跟著改?
如果是這樣...那就是每個thread都是clone 一份...不同記憶體就不會互相影響.

作者: aaa33358    時間: 2018-3-13 05:20 PM

Sharr 發表於 2018-3-12 11:31 PM
不太懂意思...
自己的程式需求是 要同步 or 非同步?..
你指的是, 有個shared resource. 幾乎是每個地方都 ...

原來如此,用clone阿,倒是真的沒想到可以用這個方式
感謝大大的指導

作者: william0903    時間: 2019-10-12 01:48 PM

我想請問一下 我用Thread 想要做成非同步 執行時程式內無法做其他事情 是否是我的非同步沒有成功? 還是就算是非同步 在資料庫運行時還是會造成程式卡著無法做其他事情
作者: stephenwei_lu    時間: 2019-12-9 05:49 PM

雖然不知道你用的db是什麼, 但是你跟db溝通後應該會將這一次的行為放到db的queue裡面
所以應該不會卡,  就算是在thread執行應該也是這個道理才是
除非你自己把他卡住, 或者你的thread之間有什麼行為在干擾
作者: min721107    時間: 2020-4-15 10:16 AM

如果你要查詢的資料太多的話,也要可能會造成select時一直等待,而無法繼續下一步




歡迎光臨 伊莉討論區 (http://www48.eyny.com/) Powered by Discuz!