C语言多线程编程实例

C语言多线程编程实例


2024年4月21日发(作者:)

linux下C语言多线程编程实例

2007年11月29日 星期四 10:39

学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。

下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。

或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。

下面是我们的代码:

/*thread_example.c : c multiple thread programming in linux

*author : falcon

*E-mail : tunzhj03@

*/

#include

#include

#include

#include

#define MAX 10

pthread_t thread[2];

pthread_mutex_t mut;

int number=0, i;

void *thread1()

{

printf ("thread1 : I'm thread 1n");

for (i = 0; i < MAX; i++)

{

printf("thread1 : number = %dn",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(2);

}

printf("thread1 :主函数在等我完成任务吗?n");

pthread_exit(NULL);

}

void *thread2()

{

printf("thread2 : I'm thread 2n");

for (i = 0; i < MAX; i++)

{

printf("thread2 : number = %dn",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(3);

}

printf("thread2 :主函数在等我完成任务吗?n");

pthread_exit(NULL);

}

void thread_create(void)

{

int temp;

memset(&thread, 0, sizeof(thread)); //comment1

/*创建线程*/

if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)

//comment2

printf("线程1创建失败!n");

else

printf("线程1被创建n");

if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3

printf("线程2创建失败");

else

printf("线程2被创建n");

}

void thread_wait(void)

{

/*等待线程结束*/

if(thread[0] !=0) { //comment4

pthread_join(thread[0],NULL);

printf("线程1已经结束n");

}

if(thread[1] !=0) { //comment5

pthread_join(thread[1],NULL);

printf("线程2已经结束n");

}

}

int main()

{


发布者:admin,转转请注明出处:http://www.yc00.com/news/1713648158a2290727.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信