با سلام !
آیا برنامه ها به صورت خودکار در حالت Multi Threading اجرا میشوند ؟
بنده قطعه کد زیر را کامپایل و اجرا گرفته ام :
main.cpp
#include <iostream>
int main(void){
constexpr double long AnotherIndex = 999999999999999999;
for(double long index=0;index <= AnotherIndex;++index){
std::cout << index << std::endl;
}
return 0x0000;
}
بعد از اجرا ، خروجی برنامه ی htop به اینصورت بود :
1 [|||||||||||||||||||||| 71.9% ] Tasks: 166, 738 thr; 4 running
2 [||||||||||||||||||| 60.30%] Load average: 2.94 1.88 1.61
3 [||||||||||||||||||||||| 74.1% ] Uptime: 04:50:24
4 [|||||||||||||||||| 56.6% ]
Mem[||||||||||||||||||||||||2.76G/3.71G]
Swp[||| 790M/7.99G]
PID USER PRI NI VIRT PES SHR S CPU% MEM% TIME+ Command
18991 ghasem 20 0 5616 1692 1544 R 89.1 0.0 1:13.01 /tmp/Opt/main
یعنی زمان اجرای این برنامه هر چهار هسته ی پردازنده درگیر خواهد شد ! ... آیا کامپایلر به صورت خودکار متناسب با پردازش Multi Threading کد را کامپایل میکند ؟ یا اینکه اینکار به عهده سیستم عامل میباشد ؟