أعد إنشاء هذا الرمز بحيث يكون أكثر نظافة ولكنه يعمل بنفس الطريقة: int request\_cs(const void \*self) {
 طلب الرسالة = createMessage(MESSAGE\_MAGIC, 0,0,0, CS\_REQUEST);
 معلومات جديدة\_معلومات؛
 new\_info.time = time\_clock;
 new\_info.id = id;
 دفع(جديد\_معلومات);
 send\_multicast(&id, &request);
 بينما (تم إدخاله\_mutex() != 1) {
 وصلت الرساله؛
 local\_id from = get(&received);
 إذا (من > 0) {
 التبديل (تم الاستلام.s\_header.s\_type) {
 الحالة CS\_REQUEST: {
 استجابة الرسالة = createMessage(MESSAGE\_MAGIC, 0, 0, 0, CS\_REPLY);
 معلومات جديدة\_معلومات؛
 new\_info.id = from;
 new\_info.time =received.s\_header.s\_local\_time;
 دفع(جديد\_معلومات);
 fprintf(EventsLog, "%d: معالجة %i CS\_REQUEST من %i\n",time\_clock, id, from);
 fflush(EventsLog);
 إرسال(&id, from, &response);
 استراحة؛
 }
 الحالة CS\_REPLY: {
 set\_reply(from);
 fprintf(EventsLog, "process %i CS\_REPLY from %i\n", id, from);
 fflush(EventsLog);
 استراحة؛
 }
 الحالة CS\_RELEASE: {
 إذا (queue.info[0].id == من) {
 البوب ​​()؛
 }
 fprintf(EventsLog, "process %i CS\_RELEASE from %i\n", id, from);
 fflush(EventsLog);
 استراحة؛
 }
 تم الانتهاء من الحالة: {
 set\_done(from);
 fprintf(EventsLog, "process %i DONE from %i", id, from);
 fflush(EventsLog);
 }
 تقصير: {
 استراحة؛
 }
 }
 }
 }
 العودة 0؛
}

إصدار int\_cs(const void \*self) {
 البوب ​​()؛
 إصدار الرسالة = createMessage(MESSAGE\_MAGIC, 0,0,0,CS\_RELEASE);
 لـ (int i = 1; i <= معالجة\_count; i++) {
 queue.replies[i] = id != i ? 0 : 1;
 }
 send\_multicast(&id, &release);
 العودة 0؛
}

مجموعة باطلة\_done(int i) {
 queue.done[i] = 1;
}

إنت خروج\_موتكس () {
 لـ (int i = 1; i <= معالجة\_count; i++){
 إذا (queue.done[i] == 0)
 العودة 0؛
 }
 العودة 1؛
}

مجموعة باطلة\_رد(int i) {
 queue.replies[i] = 1;
}

int تم إدخاله\_mutex() {
 إذا (queue.info[0].id == معرف) {
 for(int i = 1; i<=process\_count; i++) {
 إذا (قائمة الانتظار. الردود[i] == 0){
 العودة 0؛
 }
 }
 } آخر {
 العودة 0؛
 }
 العودة 1؛
}
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}