سلام
لطفا طریقه ساخت یک semaphore را بگویید و هر خط آن را توضیح دهید که چه عملی انجام می دهد.
مرسی
سلام
لطفا طریقه ساخت یک 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 ما شروعکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به فعالیت میکنه و وقتی که کارش تموم شد از کد پایین استفاده میکنیم.
سعی کردم خلاصه و مفید توضیح بدم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه براتون مشکلی پیش اومد اطلاع بدید.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)