LinuxÐźÅÁ¿Ï߳̿ØÖÆ
Ïß³ÌÖл¥³âËøµÄʹÓ㬴ﵽ¶Ô¹²Ïí×ÊÔ´»¥³âʹÓᣳýÁËʹÓû¥³âËø£¬ÐźÅÁ¿£¬Ò²¾ÍÊDzÙ×÷ϵͳÖÐËùÌáµ½µÄPVÔÓÄÜ´ïµ½»¥³âºÍͬ²½µÄЧ¹û£¬Õâ¾ÍÊǽñÌìÎÒÃÇËùÒª½²ÊöµÄÐźÅÁ¿Ï߳̿ØÖÆ¡£
PVÔÓïÊǶÔÕûÊý¼ÆÊýÆ÷ÐźÅÁ¿semµÄ²Ù×÷£¬Ò»´ÎP²Ù×÷¿Éʹsem¼õÒ»£¬¶øÒ»´ÎV²Ù×÷¿ÉÊÇsem¼ÓÒ»¡£½ø³Ì£¨»òỊ̈߳©¸ù¾ÝÐźÅÁ¿µÄÖµÀ´ÅжÏÊÇ·ñ¶Ô¹«¹²×ÊÔ´¾ßÓзÃÎÊȨÏÞ¡£µ±ÐźÅÁ¿µÄÖµ´óÓÚÁã»òµÈÓÚÁãµÄʱºò£¬¸Ã½ø³Ì£¨»òỊ̈߳©¾ßÓжԹ«¹²×ÊÔ´·ÃÎʵÄȨÏÞ£¬·ñÔò£¬µ±ÐźÅÁ¿µÄֵСÓÚʱ£¬¸Ã½ø³Ì£¨»òỊ̈߳©¾Í»á±»×èÈû£¬Ö±µ½ÐźÅÁ¿µÄÖµ´óÓÚ»òµÈÓÚÒ»¡£
1¡¢ÔÚLINUXÖУ¬ÊµÏÖÁËPOSIXµÄÎÞÃûÐźÅÁ¿£¬Ö÷ÒªÓÃÓÚÏ̼߳äµÄ»¥³âͬ²½£¬ÏÂÃæ½«¼òµ¥½éÉÜһЩº¯Êý½Ó¿Ú£º
£¨1£©¡¢sem_init
¹¦ÄÜ£º ÓÃÓÚ´´½¨Ò»¸öÐźÅÁ¿£¬²¢³õʼ»¯ÐźÅÁ¿µÄÖµ¡£
Í·Îļþ£º <semaphore.h>
º¯ÊýÔÐÍ£º int sem_init (sem_t* sem, int pshared, unsigned int value);
º¯Êý´«ÈëÖµ£º sem:ÐźÅÁ¿¡£
pshared:¾ö¶¨ÐźÅÁ¿ÄÜ·ñÔÚ¼¸¸ö½ø³Ì¼ä¹²Ïí¡£ÓÉÓÚĿǰLINUX»¹Ã»ÓÐʵÏÖ½ø
³Ì¼ä¹²ÏíÐÅÏ¢Á¿£¬ËùÒÔÕâ¸öÖµÖ»ÄÜÈ¡0¡£
º¯Êý·µ»ØÖµ£º 0£º³É¹¦¡£
-1£ºÊ§°Ü¡£
£¨2£©ÆäËûº¯Êý¡£
int sem_wait (sem_t* sem);
int sem_trywait (sem_t* sem);
int sem_post (sem_t* sem);
int sem_getvalue (sem_t* sem);
int sem_destroy (sem_t* sem);
¹¦ÄÜ£ºsem_waitºÍsem_trywaitÏ൱ÓÚP²Ù×÷£¬ËüÃǶ¼Äܽ«ÐźÅÁ¿µÄÖµ¼õÒ»£¬Á½ÕßµÄÇø±ðÔÚ
ÓÚÈôÐźÅÁ¿µÄֵСÓÚÁãʱ£¬sem_wait½«»á×èÈû½ø³Ì£¬¶øsem_trywaitÔò»áÁ¢¼´·µ»Ø¡£
sem_postÏ൱ÓÚV²Ù×÷£¬Ëü½«ÐźÅÁ¿µÄÖµ¼ÓÒ»£¬Í¬Ê±·¢³
Ïà¹ØÎĵµ£º
linuxÏÂviÃüÁî´óÈ«
ĬÈÏ·ÖÀà 2009-04-12 14:59 ÔĶÁ1663 ÆÀÂÛ2
×ֺţº ´ó´ó ÖÐÖРСС
Îı¾±à¼Æ÷ÊÇËùÓмÆËã»úϵͳÖÐ×î³£ÓõÄÒ»ÖÖ¹¤¾ß¡£Ê¹ÓÃ×îΪ¹ã·ºµÄÊÇvi£¬¶øviÃüÁî·±¶à£¬¸÷´óÂÛ̳»ù±¾É϶¼ÓÐ×ܽᣡΪÁË´ó¼Òѧϰ·½±ã£¬Çë×ÔÓÉת·¢! &nb ......
Ò»°ãÇé¿öÏ£¬½ø³Ì²»ÄÜ´æÈ¡ÏµÍ³Äں˵ģ¬Ö»ÓÐϵͳµ÷ÓÃÊÇÒ»¸öÀýÍ⣬ÔÚintel½á¹¹µÄ¼ÆËã»úÖУ¬ÊÇͨ¹ýÖжÏ0x80ʵÏÖµÄ
½ø³Ì¿ÉÒÔ¿ÉÒÔÌø×ªµ½ÄÚºËÖеÄλÖÃÊÇsystem_call¡£Ôڴ˼ì²éϵͳµ÷Óúţ¬Ëü¸æËßÄں˽ø³ÌÇëÇóºÎÖÖ·þÎñ£¬È»ºó²éÕÒϵͳµ÷Óñísys_call_table£¬ÕÒµ½Ï£Íûµ÷ÓõÄÄں˵ØÖ·º¯Êý£¬µ÷Óô˺¯Êý£¬È»ºó·µ»Ø¡£
&nbs ......
½ø³ÌÊÇϵͳÖгÌÐòÖ´ÐкÍ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Î»¡£Ã¿¸ö½ø³Ì¶¼ÓÐ×Ô¼ºµÄÊý¾Ý¶Î£¬´úÂë¶ÎºÍ¶ÑÕ»¶Î£¬Õâ¾Íµ¼ÖÂÁ˽ø³ÌÔÚ½øÐÐÇл»µÈ²Ù×÷Æðµ½ÁËÏÖ³¡±£»¤×÷Óᣵ«ÊÇΪÁ˽øÒ»²½¼õÉÙ´¦Àí»úµÄ¿Õתʱ¼äÖ§³Ö¶à´¦ÀíÆ÷ºÍ¼õÉÙÉÏÏÂÎÄÇл»¿ªÏú£¬½ø³ÌÑÝ»¯ÖгöÏÖÁËÁíÍâÒ»¸ö¸ÅÄÕâ¾ÍÊÇỊ̈߳¬Ò²±»È˳ÆÎªÇáÁ¿¼¶µÄ½ø³Ì¡£ËüÊÇÒ»¸ö½ø³ÌÄڵĻù±¾µ÷¶Èµ¥ ......