Trong một lớp tốt nghiệp, chúng tôi đã phải sử dụng các ẩn dụ để hoàn thành công việc với các chủ đề.sem_init (...): Thông số được chia sẻ cho là gì?
Chúng tôi được hướng dẫn sử dụng sem_init
cùng với một loạt các thủ tục sem_ * khác nhưng chúng tôi không được cung cấp nhiều thông tin về chi tiết của từng phương pháp sem_ * này.
Nguyên mẫu (và file header) của sem_init
là the following:
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
nhưng tôi không hiểu những gì giá trị pshared được sử dụng cho. Theo opengroup.org:
Nếu đối số
pshared
có một số không phi giá trị, sau đó semaphore được chia sẻ giữa các quá trình; trong trường hợp này, bất kỳ quá trình có thể truy cập vào các semaphoresem
có thể sử dụngsem
để thực hiệnsem_wait()
,sem_trywait()
,sem_post()
, vàsem_destroy()
hoạt động.
nhưng tôi đoán tôi không hiểu sự khác biệt giữa 1,2, 10, 25, 50000, v.v ... Tôi nghĩ rằng nếu giá trị là 0 thì semaphore không được chia sẻ. (Nhưng sau đó, điểm là gì?)
Làm thế nào để sử dụng một cách thích hợp thông số pshared
này?
Câu trả lời tuyệt vời, cảm ơn bạn đã giải thích. –
Bạn được chào đón nhiều nhất. Cảm ơn bạn đã khen :). – quark
Không phải PC để gọi phiên bản này là thuộc về GLIBC. Đó là POSIX.1-2001. –