Windows ºÍ Linux µÄIPC API¶ÔÓ¦±í
Table 1. Process mapping
Windows
Linux
Classification
CreateProcess()
CreateProcessAsUser()
fork()
setuid()
exec()
Mappable
TerminateProcess()
kill()
Mappable
SetThreadpriority()
GetThreadPriority()
Setpriority()
getPriority()
Mappable
GetCurrentProcessID()
getpid()
Mappable
Exitprocess()
exit()
Mappable
WaitForSingleObjec()
WaitForMultipleObject()
GetExitCodeProcess()
waitpid()
¡ùUsing Sys V semaphores, WaitForSingleObjec/MultipleObject
can be implemented
Context specific
GetEnvironmentVariable
SetEnvironmentVariable
getenv()
setenv()
Mappable
Table 2. Thread mapping
Windows
Linux
Classification
CreateThread
pthread_create
pthread_attr_init
pthread_attr_setstacksize
pthread_attr_destroy
Mappable
ThreadExit
pthread_exit
Mappable
WaitForSingleObject
pthread_join
pthread_attr_setdetachstate
pthread_detach
Mappable
SetPriorityClass
SetThreadPriority
setpriority
sch ......
3¡¢Ìõ¼þ±äÁ¿
¡¡¡¡Ç°Ò»½ÚÖÐÎÒÃǽ²ÊöÁËÈçºÎʹÓû¥³âËøÀ´ÊµÏÖÏ̼߳äÊý¾ÝµÄ¹²ÏíºÍͨÐÅ£¬»¥³âËøÒ»¸öÃ÷ÏÔµÄȱµãÊÇËüÖ»ÓÐÁ½ÖÖ״̬£ºËø¶¨ºÍ·ÇËø¶¨¡£¶øÌõ¼þ±äÁ¿Í¨¹ýÔÊÐíÏß³Ì×èÈûºÍµÈ´ýÁíÒ»¸öÏ̷߳¢ËÍÐźŵķ½·¨ÃÖ²¹ÁË»¥³âËøµÄ²»×㣬Ëü³£ºÍ»¥³âËøÒ»ÆðʹÓá£Ê¹ÓÃʱ£¬Ìõ¼þ±äÁ¿±»ÓÃÀ´×èÈûÒ»¸öỊ̈߳¬µ±Ìõ¼þ²»Âú×ãʱ£¬Ïß³ÌÍùÍù½â¿ªÏàÓ¦µÄ»¥³âËø²¢µÈ´ýÌõ¼þ·¢Éú±ä»¯¡£Ò»µ©ÆäËüµÄij¸öÏ̸߳ıäÁËÌõ¼þ±äÁ¿£¬Ëü½«Í¨ÖªÏàÓ¦µÄÌõ¼þ±äÁ¿»½ÐÑÒ»¸ö»ò¶à¸öÕý±»´ËÌõ¼þ±äÁ¿×èÈûµÄÏ̡߳£ÕâЩÏ߳̽«ÖØÐÂËø¶¨»¥³âËø²¢ÖØÐ²âÊÔÌõ¼þÊÇ·ñÂú×ã¡£Ò»°ã˵À´£¬Ìõ¼þ±äÁ¿±»ÓÃÀ´½øÐÐÏ߳мäµÄͬ²½¡£
¡¡¡¡Ìõ¼þ±äÁ¿µÄ½á¹¹Îªpthread_cond_t£¬º¯Êýpthread_cond_init£¨£©±»ÓÃÀ´³õʼ»¯Ò»¸öÌõ¼þ±äÁ¿¡£ËüµÄÔÐÍΪ£º
¡¡¡¡extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));
¡¡¡¡ÆäÖÐcondÊÇÒ»¸öÖ¸Ïò½á¹¹pthread_cond_tµÄÖ¸Õ룬cond_attrÊÇÒ»¸öÖ¸Ïò½á¹¹pthread_condattr_tµÄÖ¸Õë¡£½á¹¹ pthread_condattr_tÊÇÌõ¼þ±äÁ¿µÄÊôÐԽṹ£¬ºÍ»¥³âËøÒ»ÑùÎÒÃÇ¿ÉÒÔÓÃËüÀ´ÉèÖÃÌõ¼þ±äÁ¿Êǽø³ÌÄÚ¿ÉÓû¹Êǽø³Ì ......
ÒýÑÔ
¡¡¡¡Ị̈߳¨thread£©¼¼ÊõÔçÔÚ60Äê´ú¾Í±»Ìá³ö£¬µ«ÕæÕýÓ¦ÓöàÏ̵߳½²Ù×÷ϵͳÖÐÈ¥£¬ÊÇÔÚ80Äê´úÖÐÆÚ£¬ solarisÊÇÕâ·½ÃæµÄٮٮÕß¡£´«Í³µÄUnixÒ²Ö§³ÖÏ̵߳ĸÅÄµ«ÊÇÔÚÒ»¸ö½ø³Ì£¨process£©ÖÐÖ»ÔÊÐíÓÐÒ»¸öỊ̈߳¬ÕâÑù¶àÏ߳̾ÍÒâζ×Å¶à½ø³Ì¡£ÏÖÔÚ£¬¶àÏ̼߳¼ÊõÒѾ±»Ðí¶à²Ù×÷ϵͳËùÖ§³Ö£¬°üÀ¨Windows/NT£¬µ±È»£¬Ò²°üÀ¨Linux¡£
¡¡¡¡ÎªÊ²Ã´ÓÐÁ˽ø³ÌµÄ¸ÅÄîºó£¬»¹ÒªÔÙÒýÈëÏß³ÌÄØ£¿Ê¹ÓöàÏ̵߳½µ×ÓÐÄÄЩºÃ´¦£¿Ê²Ã´µÄϵͳӦ¸ÃÑ¡ÓöàỊ̈߳¿ÎÒÃÇÊ×ÏȱØÐë»Ø´ðÕâЩÎÊÌâ¡£
¡¡¡¡Ê¹ÓöàÏ̵߳ÄÀíÓÉÖ®Ò»ÊǺͽø³ÌÏà±È£¬ËüÊÇÒ»Öַdz£"½Ú¼ó"µÄ¶àÈÎÎñ²Ù×÷·½Ê½¡£ÎÒÃÇÖªµÀ£¬ÔÚLinuxϵͳÏ£¬Æô¶¯Ò»¸öеĽø³Ì±ØÐë·ÖÅ䏸Ëü¶ÀÁ¢µÄµØÖ·¿Õ¼ä£¬½¨Á¢ÖÚ¶àµÄÊý¾Ý±íÀ´Î¬»¤ËüµÄ´úÂë¶Î¡¢¶ÑÕ»¶ÎºÍÊý¾Ý¶Î£¬ÕâÊÇÒ»ÖÖ"°º¹ó"µÄ¶àÈÎÎñ¹¤×÷·½Ê½¡£¶øÔËÐÐÓÚÒ»¸ö½ø³ÌÖеĶà¸öỊ̈߳¬ËüÃDZ˴ËÖ®¼äʹÓÃÏàͬµÄµØÖ·¿Õ¼ä£¬¹²Ïí´ó²¿·ÖÊý¾Ý£¬Æô¶¯Ò»¸öÏß³ÌËù»¨·ÑµÄ¿Õ¼äԶԶСÓÚÆô¶¯Ò»¸ö½ø³ÌËù»¨·ÑµÄ¿Õ¼ä£¬¶øÇÒ£¬Ï̼߳ä±Ë´ËÇл»ËùÐèµÄʱ¼äҲԶԶСÓÚ½ø³Ì¼äÇл»ËùÐèÒªµÄʱ¼ä¡£
¡¡¡¡Ê¹ÓöàÏ̵߳ÄÀíÓÉÖ®¶þÊÇÏ̼߳䷽±ãµÄͨÐÅ»úÖÆ¡£¶Ô²»Í¬½ø³ÌÀ´Ëµ£¬ËüÃǾßÓжÀÁ¢µÄÊý¾Ý¿Õ¼ä£¬Òª½øÐÐÊý¾ÝµÄ´«µÝÖ»ÄÜͨ¹ýͨÐŵķ½Ê½½øÐУ¬ÕâÖÖ·½Ê½²»½ö·Ñʱ£¬¶ ......
ÐÞ¸ÄÏ̵߳ÄÊôÐÔ
¡¡¡¡ÔÚÉÏÒ»½ÚµÄÀý×ÓÀÎÒÃÇÓÃpthread_createº¯Êý´´½¨ÁËÒ»¸öỊ̈߳¬ÔÚÕâ¸öÏß³ÌÖУ¬ÎÒÃÇʹÓÃÁËĬÈϲÎÊý£¬¼´½«¸Ãº¯ÊýµÄµÚ¶þ¸ö²ÎÊýÉèΪNULL¡£µÄÈ·£¬¶Ô´ó¶àÊý³ÌÐòÀ´Ëµ£¬Ê¹ÓÃĬÈÏÊôÐԾ͹»ÁË£¬µ«ÎÒÃÇ»¹ÊÇÓбØÒªÀ´Á˽âÒ»ÏÂÏ̵߳ÄÓйØÊôÐÔ¡£
¡¡¡¡ÊôÐԽṹΪpthread_attr_t£¬ËüͬÑùÔÚÍ·Îļþ/usr/include/pthread.hÖж¨Ò壬ϲ»¶×·¸ùÎʵ׵ÄÈË¿ÉÒÔ×Ô¼ºÈ¥²é¿´¡£ÊôÐÔÖµ²»ÄÜÖ±½ÓÉèÖã¬ÐëʹÓÃÏà¹Øº¯Êý½øÐвÙ×÷£¬³õʼ»¯µÄº¯ÊýΪpthread_attr_init£¬Õâ¸öº¯Êý±ØÐëÔÚpthread_createº¯Êý֮ǰµ÷Óá£ÊôÐÔ¶ÔÏóÖ÷Òª°üÀ¨ÊÇ·ñ°ó¶¨¡¢ÊÇ·ñ·ÖÀë¡¢¶ÑÕ»µØÖ·¡¢¶ÑÕ»´óС¡¢ÓÅÏȼ¶¡£Ä¬ÈϵÄÊôÐÔΪ·Ç°ó¶¨¡¢·Ç·ÖÀ롢ȱʡ1MµÄ¶ÑÕ»¡¢Ó븸½ø³ÌͬÑù¼¶±ðµÄÓÅÏȼ¶¡£
¡¡¡¡¹ØÓÚÏ̵߳İ󶨣¬Ç£Éæµ½ÁíÍâÒ»¸ö¸ÅÄÇá½ø³Ì£¨LWP£ºLight Weight Process£©¡£Çá½ø³Ì¿ÉÒÔÀí½âΪÄÚºËỊ̈߳¬ËüλÓÚÓû§²ãºÍϵͳ²ãÖ®¼ä¡£ÏµÍ³¶ÔÏß³Ì×ÊÔ´µÄ·ÖÅä¡¢¶ÔÏ̵߳ĿØÖÆÊÇͨ¹ýÇá½ø³ÌÀ´ÊµÏֵģ¬Ò»¸öÇá½ø³Ì¿ÉÒÔ¿ØÖÆÒ»¸ö»ò¶à¸öÏ̡߳£Ä¬ÈÏ×´¿öÏ£¬Æô¶¯¶àÉÙÇá½ø³Ì¡¢ÄÄЩÇá½ø³ÌÀ´¿ØÖÆÄÄЩÏß³ÌÊÇÓÉϵͳÀ´¿ØÖƵģ¬ÕâÖÖ×´¿ö¼´³ÆÎª·Ç°ó¶¨µÄ¡£°ó¶¨×´¿öÏ£¬Ôò¹ËÃû˼Ò壬¼´Ä³¸öÏ̶̹߳¨µÄ"°ó"ÔÚÒ»¸öÇá½ø³ÌÖ®ÉÏ¡£±»°ó¶¨µÄÏ߳̾ßÓнϸߵÄÏìÓ¦ËÙ¶È£¬Õâ ......
ºÍ½ø³ÌÏà±È£¬Ï̵߳Ä×î´óÓŵãÖ®Ò»ÊÇÊý¾ÝµÄ¹²ÏíÐÔ£¬¸÷¸ö½ø³Ì¹²Ïí¸¸½ø³Ì´¦ÑØÏ®µÄÊý¾Ý¶Î£¬¿ÉÒÔ·½±ãµÄ»ñµÃ¡¢ÐÞ¸ÄÊý¾Ý¡£µ«ÕâÒ²¸ø¶àÏ̱߳à³Ì´øÀ´ÁËÐí¶àÎÊÌâ¡£ÎÒÃDZØÐëµ±ÐÄÓжà¸ö²»Í¬µÄ½ø³Ì·ÃÎÊÏàͬµÄ±äÁ¿¡£Ðí¶àº¯ÊýÊDz»¿ÉÖØÈëµÄ£¬¼´Í¬Ê±²»ÄÜÔËÐÐÒ»¸öº¯ÊýµÄ¶à¸ö¿½±´£¨³ý·ÇʹÓò»Í¬µÄÊý¾Ý¶Î£©¡£ÔÚº¯ÊýÖÐÉùÃ÷µÄ¾²Ì¬±äÁ¿³£³£´øÀ´ÎÊÌ⣬º¯ÊýµÄ·µ»ØÖµÒ²»áÓÐÎÊÌâ¡£ÒòΪÈç¹û·µ»ØµÄÊǺ¯ÊýÄÚ²¿¾²Ì¬ÉùÃ÷µÄ¿Õ¼äµÄµØÖ·£¬ÔòÔÚÒ»¸öÏ̵߳÷Óøú¯ÊýµÃµ½µØÖ·ºóʹÓøõØÖ·Ö¸ÏòµÄÊý¾Ýʱ£¬±ðµÄÏ߳̿ÉÄܵ÷Óô˺¯Êý²¢ÐÞ¸ÄÁËÕâÒ»¶ÎÊý¾Ý¡£ÔÚ½ø³ÌÖй²ÏíµÄ±äÁ¿±ØÐëÓùؼü×ÖvolatileÀ´¶¨Ò壬ÕâÊÇΪÁË·ÀÖ¹±àÒëÆ÷ÔÚÓÅ»¯Ê±£¨ÈçgccÖÐʹÓÃ-OX²ÎÊý£©¸Ä±äËüÃǵÄʹÓ÷½Ê½¡£ÎªÁ˱£»¤±äÁ¿£¬ÎÒÃDZØÐëʹÓÃÐźÅÁ¿¡¢»¥³âµÈ·½·¨À´±£Ö¤ÎÒÃǶԱäÁ¿µÄÕýȷʹÓá£ÏÂÃæ£¬ÎÒÃǾÍÖð²½½éÉÜ´¦ÀíÏß³ÌÊý¾ÝʱµÄÓйØÖªÊ¶¡£ ¡¡¡¡1¡¢Ïß³ÌÊý¾Ý ¡¡¡¡ÔÚµ¥Ï̵߳ijÌÐòÀÓÐÁ½ÖÖ»ù±¾µÄÊý¾Ý£ºÈ«¾Ö±äÁ¿ºÍ¾Ö²¿±äÁ¿¡£µ«ÔÚ¶àÏ̳߳ÌÐòÀ»¹ÓеÚÈýÖÖÊý¾ÝÀàÐÍ£ºÏß³ÌÊý¾Ý£¨TSD: Thread-Specific Data£©¡£ËüºÍÈ«¾Ö±äÁ¿ºÜÏó£¬ÔÚÏß³ÌÄÚ²¿£¬¸÷¸öº¯Êý¿ÉÒÔÏóʹÓÃÈ«¾Ö±äÁ¿Ò»Ñùµ÷ÓÃËü£¬µ«Ëü¶ÔÏß³ÌÍⲿµÄÆäËüÏß³ÌÊDz»¿É¼ûµÄ¡£ÕâÖÖÊý¾ÝµÄ±ØÒªÐÔÊÇÏÔ¶øÒ×¼ûµÄ¡£ÀýÈçÎÒÃdz£¼û ......
tables=fuckme query=where fucktime > trunc(sysdate)-1 direct=y
on linux query=\"where fucktime \> trunc\(sysdate\)-1\" ҪתÒå·û һǰһºó Öм䶼Ҫ ·ûºÅλǰ
direct=N ¿Éϧ²»Ö§³ÖÖ±½Ó·¾¶µ¼³ö ......