Linuxϵ÷ÓÃpthread¿âʵÏÖ¼òµ¥Ï̳߳Ø
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
#include <assert.h>
void * routine(void * arg);
int pool_add_job(void *(*process)(void * arg),void *arg);
int pool_init(unsigned int thread_num);
int pool_destroy(void);
void *test(void *);
/* We define a queue of jobs which will be processed in thread pool*/
typedef struct job{
void * (*process)(void *arg); /* process() will employed on job*/
void *arg;/* argument to process */
struct job * next;
}Job;
/*
* A threadpool must have the following parts:
* threads: a list of threads
* jobs : jobs in thread pool
* pool_lock: pthread_mutex_lock for thread pool
* job_ready: pthread_cond_t for job ready
* destroy: flag indicate whether the pool shall be destroyed
* size: current size of jobs list
* thread_num: max thread num initialized in pool
*/
typedef struct thread_pool{
pthread_mutex_t pool_lock;
pthread_cond_t job_ready;
Job * jobs;
int destroy;
pthread_t * threads;
unsigned int thread_num;
int size;
}Thread_pool;
/* global Thread_pool variable*/
static Thread_pool * pool=NULL;
/*Initialize the thread pool*/
int pool_init(unsigned int thread_num)
{
pool=(Thread_pool *)malloc(sizeof(Thread_pool));
if(NULL==pool)
return -1;
pthread_mutex_init(&(pool->pool_lock),NULL);
pthread_cond_init(&(pool->job_ready),NULL);
pool->jobs=NULL;
pool->thread_num=thread_num;
pool->size=0;
pool->destroy=0;
pool->threads=(pthread_t *)malloc(thread_num * sizeof(pthread_t));
int i;
for(i=0;i<thread_num;i++){
pthread_create(&(pool->threads[i]),NULL,routine,NULL);
}
return 0;
}
/*
* Add job into the pool
* assign it to some thread
*/
int pool_add_job(void *(*process)(void *),void *arg)
{
Job * newjob=(Job *)malloc(sizeof(Job));
newjob->process=process;
newjob->arg=arg;
newjob->next=NUL
Ïà¹ØÎĵµ£º
£¨1£© °²×°ºÍÅäÖÃApache
ÔÚÈçÏÂÒ³ÃæÏÂÔØapacheµÄfor Linux µÄÔ´Âë°ühttp://www.apache.org/dist/httpd/
¡¡¡¡´æÖÁ/home/xxĿ¼£¬xxÊÇ×Ô½¨Îļþ¼Ð£¬ÎÒ½¨ÁËÒ»¸öwhyµÄÎļþ¼Ð¡£
¡¡¡¡ÃüÁîÁÐ±í£º¡¡¡¡
& ......
»ùÓÚS3C2440µÄLinuxÄÚºËÒÆÖ²ºÍyaffs2ÎļþÏµÍ³ÖÆ×÷ ÊÕ²Ø
LinuxÄÚºËÒÆÖ²ºÍ¸ùÎļþÏµÍ³ÖÆ×÷
µÚÒ»ÕÂ ÒÆÖ²ÄÚºË... 2
1.1 LinuxÄں˻ù´¡ÖªÊ¶... 2
1.1.1 Linux°æ±¾... 2
1.1.2 ʲôÊDZê×¼ÄÚºË... 2
1.1.3 Linux²Ù×÷ϵͳµÄ·ÖÀà... 3
1.1.4 linuxÄں˵ÄÑ¡Ôñ... 4
1.2 LinuxÄÚºËÆô¶¯¹ý³Ì¸ÅÊö... 5
1.2.1 ......
Linux»·¾³½ø³Ì¼äͨÐÅ£¨Ò»£©¹ÜµÀºÍÓÐÃû¹ÜµÀ
ÔÚ±¾ÏµÁÐÐòÖÐ×÷Õ߸ÅÊöÁË linux ½ø³Ì¼äͨÐŵļ¸ÖÖÖ÷ÒªÊֶΡ£ÆäÖйܵÀºÍÓÐÃû¹ÜµÀÊÇ×îÔçµÄ½ø³Ì¼äͨÐÅ»úÖÆÖ®Ò»£¬¹ÜµÀ¿ÉÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµ½ø³Ì¼äµÄͨÐÅ£¬ÓÐÃû¹ÜµÀ¿Ë·þÁ˹ܵÀûÓÐÃû×ÖµÄÏÞÖÆ£¬Òò´Ë£¬³ý¾ßÓйܵÀËù¾ßÓеŦÄÜÍ⣬Ëü»¹ÔÊÐíÎÞÇ×Ôµ¹ØÏµ½ø³Ì¼äµÄͨÐÅ¡£ ÈÏÇå¹ÜµÀºÍÓÐÃû¹ÜµÀµÄ¶ÁÐ ......
http://sourceware.org/ml/glibc-bugs/2008-11/msg00073.html
http://www.nabble.com/-Bug-nptl-7057--New:-pthread-rwlock-does-not-implement-'writer-preferred'-option-td20703744.html
pthread rwlock does not implement 'writer preferred' option
linux ¶ÁÐ´Ëø
¶¨Ò壨ȫ¾Ö±äÁ¿£©£º
pthread_rwlock_t &nbs ......
ORACLE ebs 11.5.10.2 for linux as4 °²×°ÐĵÃ
metalink:
316806.1
²Î¿¼²©ÓÑ£º×ÔÓɵķç
Ŀ¼
ǰÑÔ
µÚÒ»Õ Ӳ¼þ×¼±¸
µÚ¶þÕ Èí¼þ×¼±¸
µÚÈýÕÂ 11.5.10 For Linux °²×°
µÚËÄÕ °²×°ºóµÄά»¤ºÍÎÊÌâ½â¾ö
µÚÎåÕ ebs¶ÔÍâµÄ·¢²¼
ORACLE EBS 11.5.10 ѧϰ±Ê¼Ç£¨°²×°Æª£©
ǰ ÑÔ
µÚÒ»Õ Ӳ¼þ×¼±¸
ÎÒ¹«Ë¾°²×°»ú ......