باسلام به دوستان محترم
من توی درک موضوع race condition مشکل دارم
لفا کد زیر رو در نظر بگیرین
#include <iostream>
#include <thread>
using namespace std;
void thrdfunc(void)
{
for (int i = 0 ; i > -100 ; i--)
cout << "inside thread" << endl;
}
int main()
{
thread t1(thrdfunc);
for (int i = 0 ; i < 100 ; i++)
cout << "inside main " << endl;
t1.join();
return 0;
}
}
۱ - آیا برای تابعی که نوشته شده هم race condition اتفاق میفته؟ اگر جواب خیر هستش پس چرا وقتی برنامه رو اجرا می کنیم بعضی از جوابها با هم قاطی میشم . و اگر هم جواب مثبت هست پس برای توابع هم race condition اتفاق میفته و فقط مخصوص داده های به اشتراک گذاشته نیست.
۲ - فرض کنیم من توی تابع می خوام یکسری عملیات پشت سرهم انجام بدم که مثلا یکی از این عملیات صداکردن یک وب سرویس هست که اون هم یک تابع مجزاست . اگر قرار باشه که من برای جلوگیری از race condition از mutex وغیره استفاده کنم پس استفاده از multithread به چه دردی می خوره چون اون قسمت از کد قفل میشه تا انتهای تابع . در صورتی که من میخوام این تابع چندین بار به صورت همزمان استفاده بشه .
اگر ممکنه دوستان منو راهنمایی کنن
با تشکر