LinuxÏß³Ìͬ²½: »¥³âÁ¿(mutex)
»¥³âÁ¿´Ó±¾ÖÊÉÏ˵¾ÍÊÇÒ»°ÑËø, Ìṩ¶Ô¹²Ïí×ÊÔ´µÄ±£»¤·ÃÎÊ.
1. ³õʼ»¯:
ÔÚLinuxÏÂ, Ï̵߳Ļ¥³âÁ¿Êý¾ÝÀàÐÍÊÇpthread_mutex_t. ÔÚʹÓÃǰ, Òª¶ÔËü½øÐгõʼ»¯:
¶ÔÓÚ¾²Ì¬·ÖÅäµÄ»¥³âÁ¿, ¿ÉÒÔ°ÑËüÉèÖÃΪPTHREAD_MUTEX_INITIALIZER, »òÕßµ÷ÓÃpthread_mutex_init.
¶ÔÓÚ¶¯Ì¬·ÖÅäµÄ»¥³âÁ¿, ÔÚÉêÇëÄÚ´æ(malloc)Ö®ºó, ͨ¹ýpthread_mutex_init½øÐгõʼ»¯, ²¢ÇÒÔÚÊÍ·ÅÄÚ´æ(free)ǰÐèÒªµ÷ÓÃpthread_mutex_destroy.
ÔÐÍ:
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restric attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
Í·Îļþ: <pthread.h>
·µ»ØÖµ: ³É¹¦Ôò·µ»Ø0, ³ö´íÔò·µ»Ø´íÎó±àºÅ.
˵Ã÷: Èç¹ûʹÓÃĬÈϵÄÊôÐÔ³õʼ»¯»¥³âÁ¿, Ö»Ðè°ÑattrÉèΪNULL. ÆäËûÖµÔÚÒÔºó½²½â.
2. »¥³â²Ù×÷:
¶Ô¹²Ïí×ÊÔ´µÄ·ÃÎÊ, Òª¶Ô»¥³âÁ¿½øÐмÓËø, Èç¹û»¥³âÁ¿ÒѾÉÏÁËËø, µ÷ÓÃÏ̻߳á×èÈû, Ö±µ½»¥³âÁ¿±»½âËø. ÔÚÍê³ÉÁ˶Թ²Ïí×ÊÔ´µÄ·ÃÎʺó, Òª¶Ô»¥³âÁ¿½øÐнâËø.
Ê×ÏÈ˵һϼÓËøº¯Êý:
Í·Îļþ: <pthread.h>
ÔÐÍ:
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
·µ»ØÖµ: ³É¹¦Ôò·µ»Ø0, ³ö´íÔò·µ»Ø´íÎó±àºÅ.
˵Ã÷: ¾ßÌå˵һÏÂtrylockº¯Êý, Õâ¸öº¯ÊýÊÇ·Ç×èÈûµ÷ÓÃģʽ, Ò²¾ÍÊÇ˵, Èç¹û»¥³âÁ¿Ã»±»Ëø×¡, trylockº¯Êý½«°Ñ»¥³âÁ¿¼ÓËø, ²¢»ñµÃ¶Ô¹²Ïí×ÊÔ´µÄ·ÃÎÊȨÏÞ; Èç¹û»¥³âÁ¿±»Ëø×¡ÁË, trylockº¯Êý½«²»»á×èÈûµÈ´ý¶øÖ±½Ó·µ»ØEBUSY, ±íʾ¹²Ïí×ÊÔ´´¦ÓÚæ״̬.
ÔÙ˵һϽâËùº¯Êý:
Í·Îļþ: <pthread.h>
ÔÐÍ: int pthread_mutex_unlock(pthread_mutex_t *mutex);
·µ»ØÖµ: ³É¹¦Ôò·µ»Ø0, ³ö´íÔò·µ»Ø´íÎó±àºÅ.
3. ËÀËø:
ËÀËøÖ÷Òª·¢ÉúÔÚÓжà¸öÒÀÀµËø´æÔÚʱ, »áÔÚÒ»¸öÏß³ÌÊÔͼÒÔÓëÁíÒ»¸öÏß³ÌÏ෴˳ÐòËø×¡»¥³âÁ¿Ê±·¢Éú. ÈçºÎ±ÜÃâËÀËøÊÇʹÓû¥³âÁ¿Ó¦¸Ã¸ñÍâ×¢ÒâµÄ¶«Î÷.
×ÜÌåÀ´½², Óм¸¸ö²»³ÉÎĵĻù±¾ÔÔò:
¶Ô¹²Ïí×ÊÔ´²Ù×÷ǰһ¶¨Òª»ñµÃËø.
Íê³É²Ù×÷ÒÔºóÒ»¶¨ÒªÊÍ·ÅËø.
¾¡Á¿¶Ìʱ¼äµØÕ¼ÓÃËø.
Èç¹ûÓжàËø, Èç»ñµÃ˳ÐòÊÇABCÁ¬»·¿Û, ÊÍ·Å˳ÐòÒ²Ó¦¸ÃÊÇABC.
Ï̴߳íÎó·µ»ØÊ±Ó¦¸ÃÊÍ·ÅËüËù»ñµÃµÄËø.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <errno.h>
pthread_mutex_t
Ïà¹ØÎĵµ£º
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
http://www.linuxgraphics.cn/android/index.html
http://blog.chinaunix.net/u2/85805/
http://blog.csdn.net/stevenliyong/category/578556.aspx
http://blog.csdn.net/cuijpus/archive/2008/06/15/2549803.aspx
http://dbus.freedesktop.org/doc/dbus-tutorial.html#glib-client
http://www.ibm.com/developerworks ......
<?php
/**
* ʹÓù²ÏíÄÚ´æµÄPHPÑ»·ÄÚ´æ¶ÓÁÐʵÏÖ
* Ö§³Ö¶à½ø³Ì, Ö§³Ö¸÷ÖÖÊý¾ÝÀàÐ͵Ĵ洢
* ×¢: Íê³ÉÈë¶Ó»ò³ö¶Ó²Ù×÷,¾¡¿ìʹÓÃunset(), ÒÔÊÍ·ÅÁÙ½çÇø
*
* @author wangbinandi@gmail.com
* @created 2009-12-23
*/
class SHMQueue
{
private $maxQSize = 0; // ¶ÓÁÐ×î´ó³¤¶È
private $front = 0; ......