1樓:派簡
就算一段函式被加了同步鎖 它也是可以被多個執行緒同時呼叫的 只是在多個執行緒之間會做乙個cpu佔用的協調 當乙個執行緒呼叫完畢後 執行緒池中的其它執行緒才會通過這個函式。
根據lock使用的物件不同 鎖的作用域也不同 所以會出現lz所說的 同時只能被乙個執行緒呼叫。
不知道lz的目的和問題是什麼 是在多執行緒呼叫時出錯了 還是有特殊的需求 如果的確是要在不同的程式下呼叫dll 那不如每個程式都配置乙份單獨的dll來的更實在 因為考慮到dll之所以會只允許單執行緒呼叫 那麼就意味著這個dll中有一些靜態變數應用 同步呼叫時可能就會涉及到變數的使用衝突 所以建議先把那個dll搞明白 再想下一步該怎麼去做。
lz沒有提出是用什麼語言編寫程式 不同的語言在處理時也有各種區別。
2樓:網友
你可以瞭解多執行緒的同步這方面的應用。把執行緒放到synchronized塊中,當執行緒處在塊中等待共享資料狀態改變時,需要呼叫wait()方法,使執行緒等待,暫時讓出cpu的使用權,並允許其他執行緒進入synchronized塊中,對共享資料進行操作。
你可以把你的**發過來讓我們共同改正。
什麼樣的程式 多執行緒 會有問題
3樓:網友
-會導致系統崩潰的不完善的程式。
破壞多執行緒呼叫規則的程式。
獲得呼叫後不放手的程式:獲得執行許可權後自己不實現自己的堵塞,比如死迴圈等,比如需要死等其他執行緒提供的資料,但忘記允許其他執行緒能夠先於自己執行的程式。
執行時間過長而會影響到其他定時需要呼叫的執行緒執行,有可能導致流式資料不能得到及時處理的執行緒,或者自己處理資料演算法不夠優化,無法完成本職工作的程式。
其他情況(很多,只有想不到沒有做不到),可以通過系統聯調或試執行發現排除。
使用多執行緒程式設計的幾個常見問題
4樓:草原上之狼
程式出現了執行緒同步的問題。
執行緒同步是乙個系統的,包含內容很廣的問題。多執行緒程式設計需要精緻地運用執行緒同步機制以解決資源競爭、互斥、協同及死鎖等多種問題。如果你一定要用多執行緒實現,那就必須系統地掌握執行緒同步程式設計的方法。
建議先學習一本作業系統教材的多執行緒章節,瞭解整個知識脈絡(推薦《現代作業系統》,講得很好);再學習一下windows在多執行緒方面提供的執行緒同步物件和同步api;如果你用的是vc,那麼還要學習一下mfc對執行緒同步api的封裝方法。
當然,您也可以把**貼上來讓大家幫忙找出問題所在。
多程序程式設計 相對於 多執行緒程式設計的優勢在哪? 誰能給解釋一下, 謝謝了
5樓:匿名使用者
1. 多程序的優勢在於任務的獨立性,比如某個任務單獨作為乙個程序的話,崩潰隻影響自己的服務,其他任務不受影響。如果是多個任務在同乙個程序內部利用多個執行緒進行處理,某個執行緒發生了未處理的異常的話,會導致整個程序完蛋,所有的任務跟著遭殃。
2. 從資源分配上來說,多程序方案比多執行緒方案更加靈活和自由。
3. 不過任務間的通訊方面多程序要比多執行緒複雜些,編乙個好的多程序通訊方案要比多執行緒間的通訊方案困難多了。
以web server為例的話,比如我的伺服器上架設了三個**,如果是用乙個程序管理的話, **a遭受攻擊死掉了,意味著另外兩個**會出現同樣的現象。 如果是分開獨立的程序的話,三個**互不影響。
哪位能幫我分析一下多執行緒程式設計的注意事項及技巧
6樓:
1、明確目的,為什麼要使用多執行緒?如果是由於單執行緒讀寫或者網路訪問(例如http訪問網際網絡)的瓶頸,可以考慮使用執行緒池。如果是對不同的資源(例如socket連線)進行管理,可以考慮多個執行緒。
2、執行緒使用中要注意,如何控制執行緒的排程和阻塞,例如利用事件的觸發來控制執行緒的排程和阻塞,也有用訊息來控制的。
3、執行緒中如果用到公共資源,一定要考慮公共資源的執行緒安全性。一般用lock鎖機制來控制執行緒安全性。一定要保證不要有死鎖機制。
4、合理使用sleep,何時sleep,sleep的大小要根據具體專案,做出合理安排。一般原則非阻塞狀態下每個迴圈都要有sleep,這樣保證減少執行緒對cpu的搶奪。每次執行緒的就緒和啟用都會佔用一定得資源,如果執行緒體如果有多個迴圈,多處使用sleep將導致效能的下降。
5、執行緒的終止一般要使執行緒體在完成一件工作的情況下終止,一般不要直接使用丟擲執行緒異常的方式終止執行緒。
6、執行緒的優先順序一定根據程式的需要要有個整體的規劃。
什麼是多執行緒,多程序?為什麼要用多執行緒
1 多執行緒 是指從軟體或者硬體上實現多個執行緒併發執行的技術。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間執行多於一個執行緒,進而提升整體處理效能。具有這種能力的系統包括對稱多處理機 多核心處理器以及晶片級多處理或同時多執行緒處理器。在一個程式中,這些獨立執行的程式片段叫作 執行緒 利用它...
c 的執行緒和程序的區別,C 多執行緒多程序問題
執行緒是指程序內的一個執行單元,也是程序內的可排程實體.與程序的區別 1 地址空間 程序內的一個執行單元 程序至少有一個執行緒 它們共享程序的地址空間 而程序有自己獨立的地址空間 2 資源擁有 程序是資源分配和擁有的單位,同一個程序內的執行緒共享程序的資源 3 執行緒是處理器排程的基本單位,但程序不...
fortran中怎麼實現多執行緒程式設計
方法一,使用 obj建立兩個工程。其中一個 c 其中一個 fortran把被呼叫的工程編譯 但不連結 得到一個 obj 檔案把 obj 檔案新增到需呼叫的工程中。連結。方法二,使用 lib建立兩個工程。其中一個 c 其中一個 fortran 被呼叫的建立為靜態庫 lib 把被呼叫的工程編譯,連結,得...