yìng yòng chéng xù chuàng jiàn xìn hào liàng jí xū yào diào yòng semget(2)。 xì tǒng zhōng měi gè xìn hào liàng jí yóu yī gè semds_id shù jù jié gòu miáo shù, qí zhōng bāo kuò yǐ xià yuán sù:
structsemid_ds{
structipc_permsem_perm;/*operationpermissionstruct*/
structsem*sem_base;/*ptrtofirstsemaphoreinset*/
ushort_tsem_nsems;/*#ofsemaphoresinset*/
#ifdefined(_lp64)
time_tsem_otime;/*lastsemoptime*/
time_tsem_ctime;/*lastchangetime*/
#else/*_lp64*/
time_tsem_otime;/*lastsemoptime*/
int32_tsem_pad1;/*reservedfortime_texpansion*/
time_tsem_ctime;/*lastchangetime*/
int32_tsem_pad2;/*time_texpansion*/
#endif/*_lp64*/
intsem_binary;/*flagindicatingsemaphoretype*/
longsem_pad3;/*reservearea*/
};
xì tǒng huì duì chuán dì gěi semget(2) de guān jiàn zì de zhí jìn xíng jiǎn chá lái chá kàn zhè gè xìn hào liàng shì fǒu yǐ jīng cún zài liǎo, bìng tōng guò shǐ yòng ipc zhī chí lì chéng ipcaccess() jìn xíng quán xiàn jiǎn chá。 xìn hào liàng de quán xiàn hé wǒ men zài solaris wén jiàn zhōng shǐ yòng de quán xiàn mó shì yòu diǎn bù tóng。 zhè xiē quán xiàn bèi dìng yì chéng read hé alter, zhè yàng jìn chéng jiù kě yǐ dú qǔ dāng qián xìn hào liàng de zhí huò zhě duì gāi zhí jìn xíng xiū gǎi( zēng dà / jiǎn xiǎo)。 zhè liǎng gè quán xiàn shì tōng guò chuán dì gěi semget(2) diào yòng de cān shù lái jiàn lì de, tā shǐ yòng solaris wén jiàn quán xiàn zhōng tōng yòng de shǔ zhù、 zǔ hé qí tā yòng hù de gài niàn。
jiǎ shè yòu yī gè xīn de xìn hào liàng, gēn jù jǐn jiē de xià yī bù cāo zuò jiù shì duì xìn hào liàng zhí jìn xíng chū shǐ huà。 chū shǐ huà cāo zuò shǐ yòng semctl(2) diào yòng lái shí xiàn, tā shǐ yòng setval lái shè zhì mǒu gè shí jiān diǎn shàng zhè gè jí hé zhōng měi gè xìn hào liàng de zhí( huò zhě zhè gè jí hé zhōng zhǐ yòng yī gè xìn hào liàng, nà me jiù shè zhì zhè gè xìn hào liàng de zhí), huò zhě shǐ yòng setall lái shè zhì yī gè cāo zuò zhōng gāi jí hé zhōng suǒ yòu xìn hào liàng de zhí。 nèi hé de shí jì liú chéng shì míng què de, tā shǐ yòng qī wàng de quán xiàn hé zhí duì kě néng de zuì dà zhí jìn xíng jiǎn chá, rú guǒ suǒ yòu de jiǎn chá dū tōng guò liǎo, nà me jiǔ shè zhì yòng hù dìng yì de zhí。
yìng yòng chéng xù dài mǎ duì xìn hào liàng de shí jì shǐ yòng huì diào yòng semop(2) xì tǒng diào yòng。 semop(2) diào yòng shǐ yòng xìn hào liàng de id( yóu semget(2) fǎn huí)、 yī gè zhǐ xiàng sembuf jié gòu de zhǐ zhēn hé xìn hào liàng cāo zuò de gè shù zuò wéi cān shù。 sembuf jié gòu bāo hán yī xià yuán sù。
structsembuf{
ushort_tsem_num;/*semaphore#*/
shortsem_op;/*semaphoreoperation*/
shortsem_flg;/*operationflags*/
};
chéng xù yuán bì xū chuàng jiàn sembuf jié gòu bìng duì qí jìn xíng chū shǐ huà, shè zhì semaphore biān hào( shuō míng tā shì jí hé zhōng de nǎ yī gè xìn hào liàng)、 cāo zuò hé biāo zhì。 sem_op de zhí jué dìng liǎo xìn hào liàng cāo zuò shì duì xìn hào liàng jìn xíng xiū gǎi hái shì dú qǔ zhè gè xìn hào liàng de zhí。 fēi 0 de sem_op zhí kě yǐ zēng dà xìn hào liàng de zhí, yě kě yǐ jiǎn xiǎo xìn hào liàng de zhí。 zhí wéi 0 de sem_op zhǐ shì jiǎn dān de dú qǔ xìn hào liàng de zhí。 |
|
|