Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Ò»¸öLinuxÏÂCÏ̳߳صÄʵÏÖ

ʲôʱºòÐèÒª´´½¨Ï̳߳ØÄØ£¿¼òµ¥µÄ˵£¬Èç¹ûÒ»¸öÓ¦ÓÃÐèҪƵ·±µÄ´´½¨ºÍÏú»ÙỊ̈߳¬¶øÈÎÎñÖ´ÐеÄʱ¼äÓַdz£¶Ì£¬ÕâÑùÏ̴߳´½¨ºÍÏú»ÙµÄ´øÀ´µÄ¿ªÏú¾Í²»ÈݺöÊÓ£¬ÕâʱҲÊÇÏ̳߳ظóö³¡µÄ»ú»áÁË¡£Èç¹ûÏ̴߳´½¨ºÍÏú»Ùʱ¼äÏà±ÈÈÎÎñÖ´ÐÐʱ¼ä¿ÉÒÔºöÂÔ²»¼Æ£¬ÔòûÓбØÒªÊ¹ÓÃÏ̳߳ØÁË¡£ÏÂÃæÊÇLinuxϵͳÏÂÓÃCÓïÑÔ´´½¨µÄÒ»¸öÏ̳߳ء£Ï̳߳ػáά»¤Ò»¸öÈÎÎñÁ´±í(ÿ¸öCThread_worker½á¹¹¾ÍÊÇÒ»¸öÈÎÎñ)¡£pool_init()º¯ÊýÔ¤ÏÈ´´½¨ºÃmax_thread_num¸öỊ̈߳¬Ã¿¸öÏß³ÌÖ´thread_routine ()º¯Êý¡£¸Ãº¯ÊýÖÐ while (pool->cur_queue_size == 0) { pthread_cond_wait (&(pool->queue_ready),&(pool->queue_lock)); } ±íʾÈç¹ûÈÎÎñÁ´±íÖÐûÓÐÈÎÎñ£¬Ôò¸ÃÏ̳߳öÓÚ×èÈûµÈ´ý״̬¡£·ñÔò´Ó¶ÓÁÐÖÐÈ¡³öÈÎÎñ²¢Ö´ÐС£pool_add_worker()º¯ÊýÏòÏ̳߳صÄÈÎÎñÁ´±íÖмÓÈëÒ»¸öÈÎÎñ£¬¼ÓÈëºóͨ¹ýµ÷ÓÃpthread_cond_signal (&(pool->queue_ready))»½ÐÑÒ»¸ö³öÓÚ×èÈû״̬µÄÏß³Ì(Èç¹ûÓеϰ)¡£pool_destroy ()º¯ÊýÓÃÓÚÏú»ÙÏ̳߳أ¬Ï̳߳ØÈÎÎñÁ´±íÖеÄÈÎÎñ²»»áÔÙ±»Ö´ÐУ¬µ«ÊÇÕýÔÚÔËÐеÄÏ̻߳áÒ»Ö±°ÑÈÎÎñÔËÐÐÍêºóÔÙÍ˳ö¡£ÏÂÃæÌù³öÍêÕû´úÂë #include #include #include #include #include #include /* *Ï̳߳ØÀïËùÓÐÔËÐк͵ȴýµÄÈÎÎñ¶¼ÊÇÒ»¸öCThread_worker *ÓÉÓÚËùÓÐÈÎÎñ¶¼ÔÚÁ´±íÀËùÒÔÊÇÒ»¸öÁ´±í½á¹¹ */ typedef struct worker { /*»Øµ÷º¯Êý£¬ÈÎÎñÔËÐÐʱ»áµ÷Óô˺¯Êý£¬×¢ÒâÒ²¿ÉÉùÃ÷³ÉÆäËüÐÎʽ*/ void *(*process) (void *arg); void *arg;/*»Øµ÷º¯ÊýµÄ²ÎÊý*/ struct worker *next; } CThread_worker; /*Ï̳߳ؽṹ*/ typedef struct { pthread_mutex_t queue_lock; pthread_cond_t queue_ready; /*Á´±í½á¹¹£¬Ï̳߳ØÖÐËùÓеȴýÈÎÎñ*/ CThread_worker *queue_head; /*ÊÇ·ñÏú»ÙÏ̳߳Ø*/ int shutdown; pthread_t *threadid; /*Ï̳߳ØÖÐÔÊÐíµÄ»î¶¯Ïß³ÌÊýÄ¿*/ int max_thread_num; /*µ±Ç°µÈ´ý¶ÓÁеÄÈÎÎñÊýÄ¿*/ int cur_queue_size; } CThread_pool; int pool_add_worker (void *(*process) (void *arg), void *arg); void *thread_routine (void *arg); static CThread_pool *pool = NULL; void pool_init (int max_thread_num) { pool = (CThread_pool *) malloc (sizeof (CThread_pool)); pthread_mutex_init (&(pool->queue_lock), NULL); pthread_cond_init (&(pool->queue_ready), NULL); pool->queue_head = NULL; pool->max_thread_num = max_thread_num; pool->cur_queue_siz


Ïà¹ØÎĵµ£º

C Fork º¯Êý

Fork º¯Êý£º
#include <unistd.h>
pid_t fork(void);
ÓÉfork ´´½¨µÄнø³Ì±»³ÆÎª×Ó½ø³Ì¡£fork º¯Êý±»µ÷ÓÃÁ½´Î£¬µ«ÊÇ·µ»ØÁ½´Î¡£Á½´Î·µ»ØµÄÎ¨Ò»Çø±ðÊÇ×Ó½ø³ÌµÄ·µ»ØÖµÊÇ0£¬¶ø¸¸½ø³ÌµÄ·µ»ØÖµÔòÊÇÐÂ×Ó½ø³ÌµÄID¡£½«×Ó½ø³ÌµÄID ·µ»Ø¸ø¸¸½ø³ÌµÄÀíÓÉÊÇ£ºÒ»¸ö½ø³Ì¿ÉÒÔÓжà¸ö×Ó½ø³Ì£¬²¢ÇÒûÓк¯ÊýÊÇÒ»¸ö½ø³Ì»ñµÃÆä×Ó½ø³ÌµÄ½ø³ ......

¾­µäÅÅÐòËã·¨ CʵÏÖ

PART (1)
/*
===============================================
¾­µäÅÅÐò˼Ï룬²¢ÓÃCÓïÑÔÖ¸ÕëʵÏÖÅÅÐòËã·¨
================================================
*/
/*
=============================================================================
Ïà¹ØÖªÊ¶½éÉÜ£¨ËùÓж¨ÒåֻΪ°ïÖú¶ÁÕßÀí½âÏà¹Ø¸ÅÄ²¢·ÇÑϸñ¶¨ ......

LinuxÏÂÓÃeclipseдC/C++ÓïÑÔ³ÌÐòµÄ±àÒëÎÊÌâ

µ±Òª½¨Á¢Ï̵߳Èʱ£¬ÔÚLinuxÏ£¬ÓÃÎı¾±à¼­£¬ÔÚ¼üÈë“g++ -lpthread”.......“¿ÉÒÔ°Ñ¿âpthreadÒýÈ딣¬±àÒëͨ¹ý¡£ÏÖÔÚÏëÓÃeclipse£¬µ«ÊÇĬÈÏÇé¿öÏ£¬ÒýÈë²»ÁËpthread¡£»á±¨“undefined reference to phread_create”µÈ´íÎó¡£
½â¾ö·½·¨£º¿ÉÒÔÔÚprojectÖкõ½properties
ÔÚÀïÃæµÄ&ldquo ......

linux ÏÂC¡¢C++±à³Ì×ÊÁÏ




GCC    ÖÐÎÄÊֲᠠ 
   ¡¡¡¡http://www.nbfan.com/forum/dispbbs....&ID=1433&page=1   
   ¡¡¡¡GNU    make    Ö¸ÄÏ   
   ¡¡¡¡http:/ ......

LinuxÏÂC/C++±àÒëÆ÷gccʹÓüò½é

1.gcc°üº¬µÄc/c++±àÒëÆ÷
gcc,ccÓëc++,g++
gccºÍccÊÇÒ»ÑùµÄ£¬c++ºÍg++ÊÇÒ»ÑùµÄ¡£Ò»°ãc³ÌÐò¾ÍÓÃgcc±àÒ룬c++³ÌÐò¾ÍÓÃg++±àÒë¡£
2.gccµÄ»ù±¾Ó÷¨
gcc test.c£ºÈç¹ûûÓÐÖ¸¶¨Êä³öµÄÎļþ£¬Ä¬ÈϽ«±àÒë³öÒ»¸öÃûΪa.outµÄ³ÌÐò
gcc test.c -o test£º-o²ÎÊýÓÃÀ´Ö¸¶¨Éú³ÉÄ¿±ê³ÌÐòµÄÃû×Ö£¬ÕâÑù½«±àÒë³öÒ»¸öÃûΪtestµÄ³ÌÐò¡£
3.Ϊʲ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ