السلام عليكم
اخواني في هذا المنتدى العزيز
أنا عندي خبرة والحمد لله في كتابة برامج السي ولكن واجهتني مشكلة في ان اكتب البرنامج بطريقة الباينري سيمافورز
(Binary semaphores)
برنامج يحل هذه المشكلة
يوجد معالجين اسماؤهم
p1, p2
يستقبلوا داتا
x,y
من قمرين فضائيين
وبيعملوا تربيع للقيمتين ليصبحوا
اكس تربيع وواي تربيع
وبعدين بيعثوا القيمتين الى معالج ثالث اسمه
p3
لحساب مجموعهم
علما انه
p1,p2
لهم انبوت بفر واحد
one input buffer
p3 أما
له مدخلين بفر
two input buffer
البرنامج يريد تشغيل الثلاث معالجات متزامنات
وهذا وصف المشكلة بالانجليزي
Two processors P1 and P2 receive data X and Y respectively from two satellites, square the data, then send the result to a third processor P3 to calculate their sum. Each of P1 and P2 has only an input buffer for one data item while P3 has a buffer for two data items. I need concurrent program using binary semaphores to synchronize the operations of the three processors.
وهذا مثال على برنامج شبيه ولكن هنا يزيد قيمة كلن من
A.B,C
بطريقة متزامنة
يعني اذا اردنا تشغيله على برنامج يفحص كيف البروسيس
A,B,C
تعمل يقسمها وتعمل متزامنة وهذا المثال يحتوي ماهو الباينري سيمافورز
const int m = 5;
int n;
void incr (char id)
{
int i;
for (i = 1; i <= m; i = i + 1)
{
n = n +1;
cout C id C " n =" C n C " i =";
cout C i C " " C id C endi;
}
}
main()
{
n = 0;
cobegin
{
incr( 'A' ); incr( 'B' ); incr( 'C');
}
cout C "The sum is " C n C endl;
}
كلي امل وثقة بمساعدتكم
وشكرا