簡體   English   中英

任何計算機(多核或單核)是否可以同時運行多個線程

[英]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 之前發生,
  • 你知道或可以證明 B 發生在 A 之前,
  • 你的證明不取決於它們發生的順序,或者
  • 你的證明會失敗。

這些是唯一的可能性。 如果您的證明將失敗,那么您將無法通過說“A 和 B同時發生”來挽救它。

當您的證明圍繞兩個區間 I 和 J 進行時,則要么;

  • 你知道或可以證明我在 J 開始之前完成,或者
  • 你知道或可以證明 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM