並行 vs 並行
- 單核:分時多任務,非真並行。
- 多核:真並行可能,但也可能同核分時。
三種並行模式
- Task Parallelism:任務分解為獨立子任務並行。
- Data Parallelism:數據分塊,同一操作並行處理不同塊。
- Embarrassingly Parallel:演算法天然可並行,無依賴。
為何不用並行
- 線程創建/切換開銷。
- 過多線程耗盡記憶體/地址空間(32位尤其嚴重)。
- 同步複雜度。
C++11 std::thread 入門
#include
#include
void hello() { std::cout << "hello world\n"; }
int main() {
std::thread t(hello);
t.join(); // 等待線程結束
return 0;
}
編譯需 -std=c++11 -pthread。