السلام عليكم
لنفرض أنه لدينا 2 من الـ threads
A و B
هل ترتيب إنشاء هذه الـ threads يؤثر في ترتيب execution الكود الخاص بكل واحد
بعبارة أخرى إذا أنشأنا A قبل B هل هذا يعني أن A ينهي "عمله" قبل بداية عمل B
لاحظوا معي التالي:
لدي الكود التالي:
if (pthread_create(&th_tst, NULL, rechercherTete,a))
{
perror("pthread_create");
exit(EXIT_FAILURE);
}
if (pthread_create(&th_tstQ, NULL, rechercherQueue,b))
{
perror("pthread_create");
exit(EXIT_FAILURE);
}
pthread_join(th_tstQ,&l);
pthread_join(th_tst,&k);لدى تشغيل هذا البرنامج فإني أحصل على نتيجة th_tst قبلth_tstQ,
و إذا عكست ترتيب إنشائهما فإني أحصل على ترتيب معاكس في النتائج
و كأنني لم أقم أصلا بإنشاء threads و قمت فقط بمناداة الـ fonctions الواحدة تلو الأخرى
سؤال آخر:
الهدف من الـ threads المذكورين فوق هو عمل بحث في جدول
الأول يقوم بالبحث من بداية الجدول إلى نهايته
و الثاني يبحث في الاتجاه المعاكس
و أريد أن أعمل التالي:
بمجرد أن يجد أحدهما النتيجة المرجوة فإنه يخبر الآخر بضرورة التوقف ( إرسال signal أو ما شابه)
فكيف يمكن عمل ذلك


