A. 多線程同步和互斥有幾種實現方法
給你推薦morewindow的「秒殺多線程」系列博客,其中有互斥量,事件,關鍵段,信號量等方法專實現同步屬或互斥,下邊鏈接是第一篇,從里邊可以鏈接到其他後續文章http://blog.csdn.net/morewindows/article/details/7392749
B. 進程中使用的線程越多,執行速度就越快,這種說法對不對
不對
完成一個任務可以有多進程和多線程兩種方式,到底哪種方式快呢?通常人們認為Windows系統是以進程為單位分配CPU時間片的,那麼使用多個進程就可以多分得一些CPU時間,自然就會比使用單獨進程多個線程的方式快一點了。事實上這種情況並不絕對正確,首先,創建進程比創建線程要多佔用系統資源,系統資源不足往往會引起系統性能的下降,導致任務完成的比較慢。其次,由於多個進程要操作同一個數據集合,必然會因為數據爭用導致進程狀態改變,同多個線程狀態改變相比,進程切換要使用更多的CPU時間。最後,使用單進程方式,由於進程少,每個進程又可以較多的獲得CPU時間片,從而能夠很大的改善進程的性能。由此可見,並不是使用多進程處理數據就一定比使用多個線程的單進程快。圖(1)顯示了使用兩種方式的程序性能變化曲線,從圖上可以看出,無論使用何種方式,進程和線程都不是越多越好,兩種方式都存在一個臨界點,超過這個臨界點,都會因為頻繁的進程或線程狀態切換而造成程序性能下降。使用多進程方式在到達臨界點之後再增加進程就會引起性能的下降,而且下降速度比單進程多線程方式到達臨界點之後的下降速度快,這是因為進程切換比線程切換更費時。
C. 做搶購軟體,就是並發和多線程的,哪種語言有優勢,是易語言還是java還是c或者c++,就是網頁搶購和秒殺
都差不多,不過java應該方便些。
D. 線程數究竟設多少合理 csdn
驗值,有些業務設置為CPU核數的2倍,有些業務設置為CPU核數的8倍,有些業務設置為CPU核數的32倍。
「工作線程數」的設置依據是什麼,到底設置為多少能夠最大化CPU性能,是本文要討論的問題。
二、一些共性認知
在進行進一步深入討論之前,先以提問的方式就一些共性認知達成一致。
E. java的四種線程池哪個比較好
無法簡單的說那個線程好,應該說適合用那個線程,這里有比較詳細的介紹java的四種線程池,可以根據需求使用線程池。
http://blog.csdn.net/u011974987/article/details/51027795
F. 怎麼才能得實現多線程並發,在一個程序中有多個線程同時執行~
DWORD WINAPI ThreadProc1( LPVOID lpvUser )
{
for( int i = 0; i < 5; i++ )
{
Sleep( 1 );//added.
cout<<"1"<<endl;
}
return 0;
}
DWORD WINAPI ThreadProc( LPVOID lpvUser )
{
for( int i = 0; i < 5; i++ )
{
Sleep( 1 );//added.
cout<<"2"<<endl;
}
return 0;
}
說實話,實現這個是沒有意義的,多線程的並發主要是通過同步手段來實現的。同步的內核對象例如,臨界區、信號量和互斥量,等。一般是用來對共享資源的保護。所以,干這種事沒有意義,可能您想模擬時間片輪詢,當然可以,對於線程默認創建的優先順序都是一樣的,所以他們確實是按照時間片輪詢的方式調度的。為什麼,不能輸出你想要的結果呢?是因為一個時間片長足以讓你的語句輸出多次了。
G. java中秒殺使用的隊列
首先說 隊列這來種數據結構你自應該了解吧 。
可以用JDK自帶的 或者自己實現的也行,你問的如何實現隊列是指的隊列這中數據結構? 如果是 ,那你還是自己看數據結構那本書,原理都一樣 跟語言無關, 你可用JDK自帶的幾種隊列 查看JDKAPI文檔 實現了Queue介面的各種隊列基本都有,比如 線程安全的 ConcurrentLinkedQueue 這個是一個無界的線程安全的隊列 或者 ArrayBlockingQueue 這個隊列實現是一個有界阻塞隊列 都能夠實現你說的 或者 你用非線程安全的也成 只不過你自己控制線程的安全性就好了;.
H. 多線程編程和並發編程的區別
http://blog.csdn.net/cqkxboy168/article/details/9026205/
上面有一些理論基礎知識,同時還有一些舉例自己參考下吧