首页 > 编程知识 正文

php多线程处理,php如何多线程

时间:2023-05-06 14:12:07 阅读:162494 作者:3148

啊……同步终于清晰了,晕倒了.

这个东西真的让我费解,非常愚蠢.很遗憾没有书看,太费时间了.

两个线程同步锁定

#包含

#包含

#包含

#包含

#包含

#define BUFSIZE 4

#define NUMBER 8

int sum_of_number=0;

int value=0; //全局变量,注意锁定

/*定义两个变量信号量*

sem_t write_res_number;

sem_t read_res_number;

/*初始化锁*

pthread _ mutex _ t buffer _ mutex=pthread _ mutex _ initializer;

这是静态void *产品(void * arg )

{

int i;

for(I=0; i=12; I )

{

/*减少可写入资源数量*

SEM_wait(write_RES_number );

//摇号/

thread_mutex_lock(buffer_mutex );

value=1

printf(procuderwrite:%d(n ),value );

//解锁/

pthread _ mutex _ unlock (buffer _ mutex;

SEM_post(read_RES_number );

}

返回空值;

}

静态void * consumer (void * arg ) )。

{

int i,num;

for(I=0; i=12; I )

{

SEM_post(write_RES_number );

SEM_wait(read_RES_number );

thread_mutex_lock(buffer_mutex );

value=1

printf(readvalue%d.n ),value );

pthread _ mutex _ unlock (buffer _ mutex;

}

返回空值;

}

intmain(intargc,char ** argv ) ) ) ) ) ) ) )。

{

pthread_t p_tid;

pthread_t c_tid;

SEM_init(write_RES_number,0,0 );

SEM_init(read_RES_number,0,0 );

phread_create(p_tid,NULL,producer,NULL );

phread_create(c_tid,NULL,consumer,NULL );

phread_join(p_tid,NULL );

phread_join(c_tid,NULL );

pthread _ mutex _ destroy (buffer _ mutex; /*/

}

在linux上也一样。

正在cygwin上运行结果:

$ gcc -lpthread -o th th

$ ./th

procuder write: 1

领先价值2。

procuder write: 3

导言值4。

procuder write: 5

领先价值6。

procuder write: 7

领先价值8。

procuder write: 9

领先价值10。

procuder write: 11

领先价值12。

procuder write: 13

领先价值14。

procuder write: 15

导言值16。

procuder write: 17

领先价值18。

procuder write: 19

领先价值20。

procuder write: 21

导言值22。

procuder write: 23

导言值24。

procuder write: 25

导言值26。

$

posted on 2008-11-17 13:38左向右阅读(1211 )注释)0)编辑收藏引用分类: Linux学习库,UNIX

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。