LinuxÏß³Ìpthread±Ê¼Ç
ÔÚÔĶÁNginxµÄ´úÂë.ÏÈÅöµ½µÄÊÇÏ̲߳¿·ÖµÄ
ÒòΪ´Ómain¿ªÊ¼×îÔçÊÇ×öÏ̲߳¿·ÖµÄ¹¤×÷
ʵϰһÏÂpthread·½ÃæµÄÄÚÈÝ
#include "pthread.h"
#include "stdio.h"
void* thread_test(void* ptr)
{
while(1)
printf("i am child pthread\n");
}
int main()
{
pthread_t tid;
pthread_create(&tid, NULL, thread_test, NULL);
while(1)
printf("i am main pthread\n");
return 0;
}
Õâ¶Î´úÂëÊÇ´Ó±ðÈËÕâÀïÕÒµ½µÄ.²»¹ý°Ñµ±ÖеÄbugÐÞÕýÁË
±àÒëÃüÁîÐÐ
./gcc -lpthread -o pthread ./pthread.c
¼ÇסÐèÒª¼Ó-lpthread²ÎÊý,·ñÔòpthreadµÄÏà¹Øº¯Êý»á±¨¸æ˵ÕÒ²»µ½
¹ØÓÚpthread_createº¯Êý
ÓÐÈËÌáµ½Ëû´´½¨µÄ×ÓÏ̻߳ñÈ¡µ½µÄpidºÍÖ÷Ï̵߳IJ»Ò»ÖÂ
ÕâÊÇÓÉÓÚÔçÆÚÄں˰汾ÖеÄʵÏÖ²»Í¬.ÓÉÓÚpthreadÖ»ÊÇʹÓÃÇáÁ¿½ø³ÌȥģÄâÏß³Ì
ÔçÆÚµÄpthreadʵÏÖÊÇlinuxthread¿â,ÿ¸öÇáÁ¿½ø³Ì»á±»ÏÔʾÔÚps½ø³ÌÁбíÖÐ
¶ø×îеÄpthreadʵÏÖÊÇNPTL,ËùÓÐÇáÁ¿½ø³ÌÔÚ½ø³ÌÁбíÖÐÖ»±íÏÖΪÖ÷Ï̵߳ÄPIDºÅ.
Æäʵÿ¸öÏ̵߳ÄpidÊDz»Í¬µÄ.µ«ÊÇpthread¿âÈÃͨ¹ýpthread_create´´½¨µÄÏ̵߳ÄpidÓëÖ÷pidÒ»Ö¶øÒÑ.
¼ÈȻÿ¸ö½ø³Ì¶¼ÓжÀÁ¢µÄ½ø³Ì,ÄÇôʵ¼ÊµÄÏ̵߳Ľø³ÌºÅÔÚÄÄÀï¿ÉÒÔ¿´µ½ÄØ?
¾¹ýÊÔÑé
ÎÒ·¢ÏÖÔÚ/proc/[PID]/taskĿ¼ÏÂ
±£´æÓд˽ø³ÌËùÓеÄpthreadµÄʵ¼Ê½ø³ÌºÅ
ÀýÈçÉÏÃæµÄÀý³Ì,µ±ÎÒÃÇÖ´ÐÐÖ®ºó
ÎÒÃÇÔÚpsÖп´µ½µÄ½ø³ÌºÅÈç¹ûÊÇ20632
ÄÇô½øÈë/proc/20632/task
ÎÒÃÇ¿ÉÒÔ¿´µ½ÓÐ20632ÒÔ¼°20633Á½¸öpid
Æäʵ20633¾ÍÊǵڶþ¸ö´´½¨³öÀ´µÄÇáÁ¿½ø³Ì
¸ù¾ÝPOSIXµÄÒªÇó
ÎÒÃÇɱµôÈκÎÒ»¸öÏß³Ì,Æäʵ¶¼»á°ÑSIGNO·¢Ë͵½ËùÓеÄÏß³ÌÖÐ.
ËùÒÔÎÒÃÇÈç¹ûÖ´ÐÐkill -9 20633
ÆäʵÄã»á·¢ÏÖÕû¸ö³ÌÐò¶¼Í˳öÁË
ÏÂÃæÎÒ°ÑPOSIX¶ÔÏß³ÌʵÏÖµÄÒªÇóÌù³öÀ´(Õⲿ·Ö²Î¿¼ÁËlinuxÏß³ÌdzÎö)
1, ²é¿´½ø³ÌÁбíµÄʱºò, Ïà¹ØµÄÒ»×étask_structÓ¦µ±±»Õ¹ÏÖΪÁбíÖеÄÒ»¸ö½Úµã;
2, ·¢Ë͸øÕâ¸ö”½ø³Ì”µÄÐźÅ(¶ÔÓ¦killϵͳµ÷ÓÃ), ½«±»¶ÔÓ¦µÄÕâÒ»×étask_structËù¹²Ïí, ²¢ÇÒ±»ÆäÖеÄÈÎÒâÒ»¸ö”Ï߳̔´¦Àí;
3, ·¢Ë͸øij¸ö”Ï߳̔µÄÐźÅ(¶ÔÓ¦pthread_kill), ½«Ö»±»¶ÔÓ¦µÄÒ»¸ötask_struct½ÓÊÕ, ²¢ÇÒÓÉËü×Ô¼ºÀ´´¦Àí;
4, µ±”½ø³Ì&r
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
½ñÌìºöÈ»·¢ÏÖ´úÀí·þÎñÆ÷²»ÄÜʹÓÃÁË£¬ÉÏÈ¥Ò»¿´£¬squidµÄ¶Ë¿Ú¼àÌýStopµôÁË£¬²é¿´ÈÕÖ¾£¬ÈçÏ´íÎó ¡¡¡¡½ñÌìºöÈ»·¢ÏÖ´úÀí·þÎñÆ÷²»ÄÜʹÓÃÁË£¬ÉÏÈ¥Ò»¿´£¬squidµÄ¶Ë¿Ú¼àÌýStopµôÁË£¬²é¿´ÈÕÖ¾£¬ÈçÏ´íÎó
¡¡¡¡localhost kernel: Out of Memory: Killed process 785 (squid).
¡¡¡¡ÍøÉÏgoogleһͨ£¬Ã»ÓÐÈκÎÓмÛÖµµÄ½á¹û£¬×Ô¼ºÕÒÆäË ......
1.ϵͳÐÅÏ¢ÏÔʾÃüÁî # uname -a # ²é¿´ÄÚºË/²Ù×÷ϵͳ/CPUÐÅÏ¢
# head -n 1 /etc/issue # ²é¿´²Ù×÷ϵͳ°æ±¾
# cat /proc/cpuinfo # ²é¿´CPUÐÅÏ¢
# hostname ......
Linux ²Ù×÷ϵͳ C ÓïÑÔ±à³ÌÈëÃÅ
Ŀ ¼
µÚÒ»Õ »ù´¡ÖªÊ¶ ……………………………………………………………4
µÚ¶þÕÂ ......
CMake ÊÇÒ»¸ö¿çƽ̨µÄ×Ô¶¯»¯½¨¹¹ÏµÍ³,ËüʹÓÃÒ»¸öÃûΪ CMakeLists.txt µÄÎļþÀ´ÃèÊö¹¹½¨¹ý³Ì,¿ÉÒÔ²úÉú±ê×¼µÄ¹¹½¨Îļþ,Èç Unix µÄ Makefile »òWindows Visual C++ µÄ projects/workspaces ¡£Îļþ CMakeLists.txt ÐèÒªÊÖ¹¤±àд,Ò²¿ÉÒÔͨ¹ý±àд½Å±¾½øÐаë×Ô¶¯µÄÉú³É¡£CMake ÌṩÁË±È autoconfig ¸ü¼ò½àµÄÓï·¨¡£ÔÚ linux Æ½Ì¨Ï ......