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

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

ʲôʱºòÐèÒª´´½¨Ï̳߳ØÄØ£¿¼òµ¥µÄ˵£¬Èç¹ûÒ»¸öÓ¦ÓÃÐèҪƵ·±µÄ´´½¨ºÍÏú»ÙỊ̈߳¬¶øÈÎÎñÖ´ÐеÄʱ¼äÓַdz£¶Ì£¬ÕâÑùÏ̴߳´½¨ºÍÏú»ÙµÄ´øÀ´µÄ¿ªÏú¾Í²»ÈݺöÊÓ£¬ÕâʱҲÊÇÏ̳߳ظóö³¡µÄ»ú»áÁË¡£Èç¹ûÏ̴߳´½¨ºÍÏú»Ùʱ¼äÏà±ÈÈÎÎñÖ´ÐÐʱ¼ä¿ÉÒÔºöÂÔ²»¼Æ£¬ÔòûÓбØÒªÊ¹ÓÃÏ̳߳ØÁË¡£
ÏÂÃæÊÇLinuxϵͳÏÂÓÃCÓïÑÔ´´½¨µÄÒ»¸öÏ̳߳ء£Ï̳߳ػáά»¤Ò»¸öÈÎÎñÁ´±í(ÿ¸öCThread_worker½á¹¹¾ÍÊÇÒ»¸öÈÎÎñ)¡£
pool_init()º¯ÊýÔ¤ÏÈ´´½¨ºÃmax_thread_num¸öỊ̈߳¬Ã¿¸öÏß³ÌÖ´thread_routine ()º¯Êý¡£¸Ãº¯ÊýÖÐ
1. while (pool->cur_queue_size == 0)
2. {
3. pthread_cond_wait (&(pool->queue_ready),&(pool->queue_lock));
4. }
±íʾÈç¹ûÈÎÎñÁ´±íÖÐûÓÐÈÎÎñ£¬Ôò¸ÃÏ̳߳öÓÚ×èÈûµÈ´ý״̬¡£·ñÔò´Ó¶ÓÁÐÖÐÈ¡³öÈÎÎñ²¢Ö´ÐС£
pool_add_worker()º¯ÊýÏòÏ̳߳صÄÈÎÎñÁ´±íÖмÓÈëÒ»¸öÈÎÎñ£¬¼ÓÈëºóͨ¹ýµ÷ÓÃpthread_cond_signal (&(pool->queue_ready))»½ÐÑÒ»¸ö³öÓÚ×èÈû״̬µÄÏß³Ì(Èç¹ûÓеϰ)¡£
pool_destroy ()º¯ÊýÓÃÓÚÏú»ÙÏ̳߳أ¬Ï̳߳ØÈÎÎñÁ´±íÖеÄÈÎÎñ²»»áÔÙ±»Ö´ÐУ¬µ«ÊÇÕýÔÚÔËÐеÄÏ̻߳áÒ»Ö±°ÑÈÎÎñÔËÐÐÍêºóÔÙÍ˳ö¡£
ÏÂÃæÌù³öÍêÕû´úÂë
1. #include
2. #include
3. #include
4. #include
5. #include
6. #include
7.
8. /*
9. *Ï̳߳ØÀïËùÓÐÔËÐк͵ȴýµÄÈÎÎñ¶¼ÊÇÒ»¸öCThread_worker
10. *ÓÉÓÚËùÓÐÈÎÎñ¶¼ÔÚÁ´±íÀËùÒÔÊÇÒ»¸öÁ´±í½á¹¹
11. */
12. typedef struct worker
13. {
14. /*»Øµ÷º¯Êý£¬ÈÎÎñÔËÐÐʱ»áµ÷Óô˺¯Êý£¬×¢ÒâÒ²¿ÉÉùÃ÷³ÉÆäËüÐÎʽ*/
15. void *(*process) (void *arg);
16. void *arg;/*»Øµ÷º¯ÊýµÄ²ÎÊý*/
17. struct worker *next;
18.
19. } CThread_worker;
20.
21.
22. /*Ï̳߳ؽṹ*/
23. typedef struct
24. {
25. pthread_mutex_t queue_lock;
26. pthread_cond_t queue_ready;
27.
28. /*Á´±í½á¹¹£¬Ï̳߳ØÖÐËùÓеȴýÈÎÎñ*/
29. CThread_worker *queue_head;
30.
31. /*ÊÇ·ñÏú»ÙÏ̳߳Ø*/
32. int shutdown;
33. pthread_t *threadid;
34. /*Ï̳߳ØÖÐÔÊÐíµÄ»î¶¯Ïß³ÌÊýÄ¿*/
35. int max_thread_num;
36. /*µ±Ç°µÈ´ý¶ÓÁеÄÈÎÎñÊýÄ¿*/
37. int cur_queue_size;
38.
39. } CThread_pool;
40.
41.
42. int pool_add_worker (void *(*process) (void *arg), void *arg);
43. void *thread_routine (void *arg);
44.
45.
46. static CT


Ïà¹ØÎĵµ£º

LinuxѧϰµÄ·Ïßͼ 2010 04 21

Õýʽ¿ªÊ¼Ó¦ÓÃlinux£¬Êµ¼ù»¹ÊǺÜÖØÒªµÄ£¬ÃüÁî²»ÊDZ³³öÀ´µÄ£¬ÊÇʵ¼ù³öÀ´µÄ
LinuxѧϰµÄ·Ïßͼ£º
1£® ÕÆÎÕÖÁÉÙ50¸öÒÔÉϵij£ÓÃÃüÁî¡£
2£® ÊìϤGnome/KDEµÈX-windows×ÀÃæ»·¾³²Ù×÷ ¡£
3£® ÕÆÎÕ.tgz¡¢.rpmµÈÈí¼þ°üµÄ³£Óð²×°·½·¨
4£® ѧϰÌí¼ÓÍâÉ裬°²×°É豸Çý¶¯³ÌÐò£¨±ÈÈçÍø¿¨£©
5£® ÊìϤGrub/LiloÒýµ¼Æ÷¼°¼òµ¥µÄÐÞ¸´² ......

Linux ̽Ë÷

ת£ºhttp://www.nounix.com/linux-explore-the-legend-of-the-beginning-of-the-first-act-14577/
<Linux ̽Ë÷>
µÄÄ¿µÄÊǰïÖúÄúÈÏʶLinux Õâ¸ö²©´ó¾«ÉîµÄ²Ù×÷ϵͳ²úÆ·£¬Èç¹ûÄú´ø×ÅÏë³ÉΪר¼Ò»òÕß¶¥¼âLinux ÈËÎïÀ´¿´±¾Îĵϰ£¬Äú¿Ï¶¨ÒªÊ§ÍûÁË¡£ÒòΪÎÒ×Ô¼ºÒ²»¹ÊÇLinux µÄ³õѧÕߣ¬ÔõôÄܹ»Ð´³öÈÃÄú³ÉΪ¸ßÊÖµÄÎÄÕ£¿£¨Ð ......

C/C++µ¥Ôª²âÊÔÀíÂÛ¾«Òª£¨Áù£©

2.1 ¿É²âÐÔÎÊÌâÏê½â(2)
   
    ½ÓÏÂÀ´ÎÒÃÇÌÖÂÛÖØµãÎÊÌ⣺¸²¸ÇÊäÈë¡£Ò»¸öº¯Êý£¬ÊäÈë»áÓÐÄÄÐ©ÄØ£¿ÊäÈë°üÀ¨Á½·½Ã棺ÍⲿÊäÈ룬ÄÚ²¿ÊäÈë¡£ÍⲿÊäÈëÈÝÒ×Àí½â£¬¾ÍÊǺ¯ÊýÍⲿ¿ÉÒÔÉ趨µÄÊäÈ룬°üÀ¨²ÎÊý£¬È«¾Ö±äÁ¿£¬³ÉÔ±±äÁ¿¡£
    
   
  &nb ......

C/C++Îļþ²Ù×÷

ÔÚC++ÖУ¬¿ÉÒÔʹÓöàÖÖ·½·¨¶ÔÎļþ½øÐвÙ×÷£¬Èç»ùÓÚCµÄÎļþ²Ù×÷¡¢»ùÓÚC++µÄÎļþ²Ù×÷µÈµÈ£»
¡ô»ùÓÚCµÄÎļþ²Ù×÷
ÔÚANSI CÖУ¬¶ÔÎļþµÄ²Ù×÷·ÖΪÁ½ÖÖ·½Ê½£¬¼´Á÷ʽÎļþ²Ù×÷ºÍI/OÎļþ²Ù×÷£¬ÏÂÃæ¾Í·Ö±ð½éÉÜÖ®¡£
Ò».Á÷ʽÎļþ²Ù×÷
ÕâÖÖ·½Ê½µÄÎļþ²Ù×÷ÓÐÒ»¸öÖØÒªµÄ½á¹¹FILE£¬FILEÔÚstdio.hÖж¨ÒåÈçÏ£º
 typedef struct {
i ......

C/C++: Ê®Áù½øÖÆ×ª10½øÖÆÔ´Âë ÊÕ²Ø

C/C++: Ê®Áù½øÖÆ×ª10½øÖÆÔ´Âë
ÊÕ²Ø



view plain
copy to clipboard
print
?
int
 hex_char_value(
char
 c)  
{  
    if
(c >= 
'0'
 && ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ