LinuxÖеŤ×÷¶ÓÁÐ (2.6.0~2.6.19 and 2.6.20 ~ now)
http://blog.chinaunix.net/u2/69889/showart_971040.html
LinuxÖеŤ×÷¶ÓÁÐ
£Ûǰ¼Ç£ÝLinux×Ô´Ó2.6.20Ö®ºó£¬¹¤×÷¶ÓÁз¢ÉúÁËһЩ±ä»¯£¬Ä¿Ç°´ÓÍøÂçÉÏËÑË÷µÄ×ÊÁÏÒ»°ã¶¼ÊǽéÉÜÀϰ汾µÄ¹¤×÷¶ÓÁУ¬ºÜÉÙ¼ûµ½¶Ôа汾µÄ½éÉÜ¡£±¾ÎĶÔÐÂÀϰ汾¶¼×öÁ˼òÒª¸ÅÊö£¬²¢·Ö±ðÌṩÁ˼òµ¥µÄʵ×÷°¸Àý¡£
*******************************************************************************************************************
¹¤×÷¶ÓÁÐ
(work
queue)
ÊÇ
Linux
kernel
Öн«¹¤×÷ÍÆºóÖ´ÐеÄÒ»ÖÖ»úÖÆ¡£ÕâÖÖ»úÖÆºÍ
BH
»ò
Tasklets
²»Í¬Ö®´¦ÔÚÓÚ¹¤×÷¶ÓÁÐÊǰÑÍÆºóµÄ¹¤×÷½»ÓÉÒ»¸öÄÚºËÏß³ÌÈ¥Ö´ÐУ¬Òò´Ë¹¤×÷¶ÓÁеÄÓÅÊÆ¾ÍÔÚÓÚËüÔÊÐíÖØÐµ÷¶ÈÉõÖÁ˯Ãß¡£
¹¤×÷¶ÓÁÐÊÇ
2.6
Äں˿ªÊ¼ÒýÈëµÄ»úÖÆ£¬ÔÚ
2.6.20
Ö®ºó£¬¹¤×÷¶ÓÁеÄÊý¾Ý½á¹¹·¢ÉúÁËһЩ±ä»¯£¬Òò´Ë±¾ÎÄ·Ö³ÉÁ½¸ö²¿·Ö¶Ô
2.6.20
֮ǰºÍÖ®ºóµÄ°æ±¾·Ö±ð×ö½éÉÜ¡£
1
¡¢
2.6.0~2.6.19
Êý¾Ý½á¹¹£º
struct
work_struct {
unsigned
long pending;
struct
list_head entry;
void
(*func)(void *);
void
*data;
void
*wq_data;
struct
timer_list timer;
};
pending
ÊÇÓÃÀ´¼Ç¼¹¤×÷ÊÇ·ñÒѾ¹ÒÔÚ¶ÓÁÐÉÏ£»
entry
ÊÇÑ»·Á´±í½á¹¹£»
func
×÷Ϊº¯ÊýÖ¸Õ룬ÓÉÓû§ÊµÏÖ£»
data
ÓÃÀ´´æ´¢Óû§µÄ˽ÈËÊý¾Ý£¬´ËÊý¾Ý¼´ÊÇ
func
µÄ²ÎÊý£»
wq_data
Ò»°ãÓÃÀ´Ö¸Ïò¹¤×÷ÕßỊ̈߳¨¹¤×÷ÕßÏ̲߳ο¼ÏÂÎÄ£©£»
timer
ÊÇÍÆºóÖ´ÐеĶ¨Ê±Æ÷¡£
work_struct
µÄÕâЩ±äÁ¿À
func
ºÍ
data
ÊÇÓû§Ê¹Óõ쬯äËûÊÇÄÚ²¿±äÁ¿£¬ÎÒÃÇ¿ÉÒÔ²»ÓÃÌ«¹ý¹ØÐÄ¡£
API
£º
1)
INIT_WORK(_work, _func, _data)
³õʼ»¯Ö¸¶¨¹¤×÷£¬Ä¿µÄÊǰÑÓû§Ö¸¶¨µÄº¯Êý
_func
¼°
_func
ÐèÒªµÄ²ÎÊý
_data
¸³¸ø
work_struct
µÄ
func
¼°
data
±äÁ¿¡£
2)
int schedule_work(struct work_struct *work)
¶Ô¹¤×÷½øÐе÷¶È£¬¼´°Ñ¸ø¶¨¹¤×÷µÄ´¦Àíº¯ÊýÌá½»¸øÈ±Ê¡µÄ¹¤×÷¶ÓÁк͹¤×÷ÕßÏ̡߳£¹¤×÷ÕßÏ̱߳¾ÖÊÉÏÊÇÒ»¸öÆÕͨµÄÄÚºËỊ̈߳¬ÔÚĬÈÏÇé¿öÏ£¬Ã¿¸ö
CPU
¾ùÓÐÒ»¸öÀàÐÍΪ“
events”
µÄ¹¤×÷ÕßỊ̈߳¬µ±µ÷ÓÃ
schedule_work
ʱ£¬Õâ¸ö¹¤×÷ÕßÏ̻߳ᱻ»½ÐÑÈ¥Ö´Ðй¤×÷Á´±íÉϵÄËùÓй¤×÷¡£
3)
int schedule_delayed_work(struct work_struct *work, unsigned long
delay)
ÑÓ³ÙÖ´Ðй¤×÷£¬Óë
schedu
Ïà¹ØÎĵµ£º
errno±äÁ¿(Ðèinclude errno.h)»á±»¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,
¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔÒò¡£µ«ÊÇerrnoÊÇÒ»¸öÊý×Ö£¬´ú±íµÄ¾ßÌ庬Òå
»¹Òªµ½errno.hÖÐÈ¥ÔĶÁºê¶¨Òå¡£ÓÐÏÂÃæ¼¸ÖÖ·½·¨¿ÉÒÔ·½±ãµÄµÃµ½´íÎóÐÅÏ¢
(Ò»)
#include <stdio.h>
void perror(const char *s)
perror()ÓÃÀ´½«ÉÏÒ»¸öº¯Êý·¢Éú´íÎóµÄ ......
¡¡¼¸¸ö¼òµ¥µÄÓ¦Óá£
¡¡¡¡1¡¢ÅúÁ¿Í¼Ïñ¸ñʽת»»
¡¡¡¡Èç¹ûÏ뽫ijĿ¼ÏµÄËùÓÐjpgÎļþת»»ÎªpngÎļþ£¬Ö»ÒªÔÚÃüÁîÐÐģʽÏÂÊäÈë:
¡¡¡¡for %f in (*.jpg) do convert “%f” “%~nf.png”
¡¡¡¡2¡¢¶ÔËùÓÐͼÏñ½øÐÐͬһ²Ù×÷
¡¡¡¡Æ©È磬ÅúÁ¿Éú³ÉijĿ¼ÏÂËùÓÐPNGͼÏñÎļþµÄËõÂÔͼ(´óСΪ80×40):
¡¡¡¡fo ......
[¸ßÐÔÄܼ¼Êõ] Linux2.6ÄÚºËepoll½éÉÜ(0.1°æ±¾)
ת×Ô£º http://mechgouki.blogdriver.com/mechgouki/601157.html
[×÷Õß]£ºëøêÅ,2005/3/30,0.1°æ±¾
[°æÈ¨ÉùÃ÷]£º´ËÎĵµ×ñÑGNU×ÔÓÉÎĵµÐí¿ÉÖ¤(GNU Free Documentation License).ÈκÎÈË¿ÉÒÔ×ÔÓɸ´ÖÆ,·Ö·¢,ÐÞ¸Ä,²»¹ýÈç¹û·½±ã,Çë×¢Ã÷³ö´¦ºÍ×÷Õß:)
(1)µ¼ÑÔ£º
Ê×ÏÈ£¬ÎÒÇ¿ÁÒ½¨Òé ......
http://www.cublog.cn/u/2108/showart_223258.html
LinuxÄÚºËÊý¾Ý°ü´¦ÀíÁ÷³Ì£Êý¾Ý°ü½ÓÊÕ
ÓëÆä˵ÕâÆªÎÄÕ·ÖÎöÁËÍø¿¨Çý¶¯ÖÐÖÐÊý¾Ý°üµÄ½ÓÊÕ£¬»¹²»Èç˵ÊÇÒÔe100ΪÀý£¬¶ÔÍø¿¨Çý¶¯±àдµÄÒ»¸ö˵Ã÷¡£
µ±È»£¬¶ÔÊý¾Ý°üµÄ½ÓÊÕ˵µÄºÜÇå³þ¡£
×ªÔØ
Êý¾Ý°üµÄ½ÓÊÕ
×÷Õߣºkendo
Kernel£º2.6.12
Ò»¡¢´ÓÍø¿¨ËµÆð
Õâ²¢·ÇÊÇÒ»¸öÍø¿¨Ç ......