![](/img/trans.png)
[英]Can multiple threads run in parallel (not context switching) in multi core processor
[英]Can any computer (multi or single core) run many threads at the same time
我有一個簡單但不簡單的問題
任何計算機(多核或單核)都可以同時運行多個線程,同時,我的意思是兩個或多個線程同時運行嗎?
在同一時間運行多個線程的能力就是正在生產多核處理器的原因。 由於種種原因,提高單核CPU的效率變得越來越困難。 同時,可以執行與您擁有的內核/處理器數量一樣多的線程。 如果您有多個多核處理器,並行運行的最大線程數將為 num_cpus*cores_per_cpu。 如果線程數超過可用內核數,它們將交錯執行。
您可以在您的環境中創建多個線程,並讓單個 CPU 內核執行這些線程。 但是,它們的執行將不是並行的,而只是並發的。 換句話說,CPU 將首先執行一個線程(部分或全部),然后執行另一個線程。 如果第一個線程上還有工作,那么它可能會再次返回到第一個線程並執行更多指令。 線程因此同時進行。 如果線程在多個 CPU 內核上執行,那么它們可以同時執行,這意味着它們是並行執行的。
總之,單個 CPU 內核上的多個線程可以並發執行。 多個 CPU 內核上的多個線程可以並發或並行執行。
另請參閱此答案: 能否在單處理器系統上實現多線程?
......同時,在同一時間,我的意思是......在執行的同時......
聽起來您正在努力尋找一種正式的提問方式。
“同時”這個詞通常不會出現在關於並發的正式討論中。
當你談論時間時,有些事件是不可分割的時刻,然后是間隔。 每個間隔由其開始事件和結束事件定義。
每當你試圖證明某個系統的行為時,你的證明都圍繞着事件展開,然后 A 和 B 要么;
這些是唯一的可能性。 如果您的證明將失敗,那么您將無法通過說“A 和 B同時發生”來挽救它。
當您的證明圍繞兩個區間 I 和 J 進行時,則要么;
“重疊”是正式討論中的首選詞。 所以,...
...兩個或多個線程的執行可以在單處理器系統上重疊,但在任何給定的時刻,單個 CPU 將僅代表其中一個線程工作。
您必須首先了解自己的 CPU 功能。
使用這些來了解您的 CPU 可以處理多少進程。
1. lscpu
2. cat /proc/sys/kernel/threads-max
3. cat /proc/sys/kernel/pid_max
4. htop
5. top
6. cat /proc/cpuinfo
7. ulimit -a
8. ps -aeF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.