學習多程序的同步與互斥,和多線的同步與互斥時,發現他們都有sem信号量,很困惑就查了一下差別才發現:
信号量分為有名與無名
信号量在程序是以有名信号量進行通信的,線上程是以無名信号進行通信的,因為線程linux還沒有實作程序間的通信,是以在sem_init的第二個參數要為0,而且在多線程間的同步是可以通過有名信号量也可通過無名信号,但是一般情況線程的同步是無名信号量,無名信号量使用簡單,而且sem_t存儲在程序空間中,有名信号量必須LINUX核心管理,由核心結構struct ipc_ids 存儲,是随核心持續的,系統關閉,信号量則删除,當然也可以顯示删除,通過系統調用删除,