Linux多线程编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux多线程编程相关的知识,希望对你有一定的参考价值。
利用Linux多线程编程实现以下功能:
创建两个子进程;一个子线程(生产者线程)依次向缓冲区写入整数0,1,2,...,19;另一个子线程(消费者线程)暂停3s后,从缓冲区读数,每次读一个,并将读出的数字从缓冲区删除,然后将数字显示出来;父线程等待子线程2(消费者线程)的退出信息,待收集到该信息后,父线程就返回。程序代码:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char globe_buffer[100];
void *read_buffer_thread(void *arg); //这里先声明一下读缓存的线程,具体实现写在后面了
int main()
int res,i;
pthread_t read_thread;
for(i=0;i<20;i++)
globe_buffer[i]=i;
printf("\nTest thread : write buffer finish\n");
sleep(3);\\这里的3秒是多余,可以不要。
res = pthread_create(&read_thread, NULL, read_buffer_thread, NULL);
if (res != 0)
printf("Read Thread creat Error!");
exit(0);
sleep(1);
printf("waiting for read thread to finish...\n");
res = pthread_join(read_thread, NULL);
if (res != 0)
printf("read thread join failed!\n");
exit(0);
printf("read thread test OK, have fun!! exit ByeBye\n");
return 0;
void *read_buffer_thread(void *arg)
int i,x;
printf("Read buffer thread read data : \n");
for(i=0;i<20;i++)
x=globe_buffer[i];
printf("%d ",x);
globe_buffer[i]=0;//清空
printf("\nread over\n");
---------------------------------------------------------------------------------
以上程序编译:
gcc -D_REENTRANT test.c -o test.o –lpthread
运行这个程序:
$ ./test.o: 参考技术A IsWindowVisible
如何看懂《Linux多线程服务端编程
如何看懂《linux就该这么学
www.linuxprobe.com 参考技术A 这个你先需要把linux系统的基础学习好,再来研究linux上的编程。我看过的书籍《Linux就该这么学》是非常好的,可以帮助你系统的学习linux。还有官方网站www.linuxprobe.com上还有很多好的学习资料以上是关于Linux多线程编程的主要内容,如果未能解决你的问题,请参考以下文章