مشاهده نسخه کامل
: creating semaphore
آرام جان گل
10-03-2007, 13:14
سلام
لطفا طریقه ساخت یک semaphore را بگویید و هر خط آن را توضیح دهید که چه عملی انجام می دهد.
مرسی
دوباره سلام.
در مورد Semaphore که صحبت کردیم. بهتر بود موضوع در Win32-Platform بود که واضح تر باشه.
با استفاده از تابع semget میتونید یک Semaphore ایجاد کنید.
مثلا :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
الان ما یک Semaphore ایجاد کردیم البته به صورت private. میتونستیم یک ID مثلا 100 به این semaphore
نسبت بدیم. (به جای IPC_PRIVATE )
خب بعد از ایجاد کردن این semaphore باید اونرو initialize کنیم. که این کار هم با استفاده از semctl میتونیم
انجام بدیم.
مثلا :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب چون ما یک دونه semaphore داشتیم آرگومان دوم مقدارش میشه 0 (اولین semaphore)
و با استفاده از آرگومان چهارم مقدار semaphore مون رو set میکنیم که در اینجا مقدارش رو برابر با 3 گذاشتم.
گرچه بهتره به جای عدد گذاری مستقیم از union semun استفاده میکردیم که در اینجا مهم نیست.
حالا میمونه استفاده از semaphore که باستفاده از semop و یک struct انجام میشه. با استفاده از این struct
مقدار semaphore رو زیاد یا کم میکنیم.
به این شکل :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با کد بالا مقدار semaphore رو یکی کم میکنیم. وقتی باید این کار رو انجام بدیم که مثلا process ما شروع
به فعالیت میکنه و وقتی که کارش تموم شد از کد پایین استفاده میکنیم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سعی کردم خلاصه و مفید توضیح بدم.
اگه براتون مشکلی پیش اومد اطلاع بدید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.