CarpetAd
کاربر سایت
شما لینک "حت" رو نگاه کردی، لینک "را" رو نگاه کن متوجه میشی. متاسفانه به صورت عکس هم نیست که اینجا بزارم.
++
یه توضیحی در مورد Thread فک کنم باید بدم(البته وقتی DX12 بیاد همه چی عوض میشه
)
پردازنده های I3 و I7 اینتل که 2 برابر تعداد هسته هاشون Thread دارن، منظور این نیست که اومدن 4 تا هسته به صورت مجازی شبیه سازی کردن! یعنی منظور این هست، ولی هسته رو شبیه سازی نکردن، Thread رو شبیه سازی کردن!
یعنی Thread "هسته مجازی" نیست. Thread تعداد دستور هایی ـه که پردازنده در یک لحظه(که مدت زمان این لحظه ها هرچی که فرکانس پردازنده بیشتر باشه کمتره) میتونه بده. مثلا یه پردازنده تک هسته ای با یک Thread با فرکانس 2 هرتز، در هر ثانیه 2 تا دستور میده. اما با تکنولوژی Hyper Threadingـه اینتل این پردازنده دارای 2 تا Thread میشه، در هر ثانیه می تونه 4 تا دستور بده! یعنی اگه قبلا می تونست در یک ثانیه 1 رو از خونه X مموری به خونه Y ببره، و 0 رو از خونه Z مموری به خونه T ببره، الان می تونه برعکس همین کار روهم انجام بده!
ولی خوب اگه یه پردازنده 4 تا Thread واقعی داشته باشه، قوی تر از پردازنده ایه که با 2 تا هسته، 4 تا Thread ـه مجازی داره.
شما با یه برنامه که با یک Thread کار می کنه، مثلا 4 بار در ثانیه می تونی پیام"Salam!" رو توی کنسول نمایش بدی. ولی وقتی یه برنامه داری که با 2 Thread کار می کنه، 8 بار می تونی همچین کاری کنی! بعضی وقتا می خوای یه Function خیلی سنگین رو اجرا کنی، ولی می خوای برنامت کار خودش رو کنه. پس اون Function رو میدی دست یه Thread دیگه. تو C++ ما اینطوری می کنیم:
مشکلات HT چیه؟ کش مشترک برای 2 تا Thread و ... که باعث می شه این 2 تا نتونن به اندازه 2 تا Thread که 2 تا هسته دارن قدرت داشته باشه.Code:#include <string> #include <iostream> #include <thread> using namespace std; //The function we want to make the thread run. void task1(string msg) { cout << "task1 says: " << msg; } int main() { // Constructs the new thread and runs it. Does not block execution. thread t1(task1, "Hello"); //Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution. t1.join(); }
توضیحات خوبی بود دوست عزیز ، اما چه ربطی به مشاوره خرید کارت گرافیک داشت؟!!!