Я использую VMware Fusion на Mac для выполнения Windows Server 2003, Visual Studio и всех моих требований IIS.
у меня нет проблем, но мой MacBook Pro действительно имеет 4 ГБ RAM с 2 ГБ выделенными WMVare, когда это работает.
Версия GLIBC sem_init
(что вы получите, если man sem_init
в Linux) говорит следующее:
«Аргумент pshared указывает, должен ли этот семафор быть разделяется между потоками процесса или между процессами. "
Итак pshared
является логическим значением: на практике значимые значения, передаваемые ему, являются false
( 0
) и true
( 1
), хотя любое значение, отличное от 0, будет рассматриваться как истинное. Если вы передадите ему 0, вы получите семафор, к которому могут обращаться другие потоки. в том же процессе - по сути, внутрипроцессная блокировка. Вы можете использовать это как мьютекс, или вы можете использовать его в более общем плане для свойств семафора, подсчитывающих ресурсы. Возможно, если бы pthreads поддерживали семафорный API, вам не понадобилось бы это свойство sem_init
, но семафоры в Unix предшествуют потокам pthread на некоторое время.
Было бы лучше, если бы логическое значение было каким-то перечислением (например, SEM_PROCESS_PRIVATE
vs SEM_PROCESS_SHARED
), потому что тогда у вас не было бы этого вопроса, но семафоры POSIX - это довольно старый API, поскольку все это происходит.
Я бы сказал, что нет существенной разницы между значениями s 1, 2, 5 и так далее относительно общего параметра общего
. Вероятно, так написано, потому что, когда API был впервые создан, C не имел логических типов.