一起talk C栗子吧(第一百二十二回:C语言实例--多线程)
程序员文章站
2024-01-23 14:59:10
各位看官们,大家好,上一回中咱们说的是线程知识体系图的例子,这一回咱们说的例子是:多线程。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,我首先给大家拜个晚年,祝大家在新的一年里身体健...
各位看官们,大家好,上一回中咱们说的是线程知识体系图的例子,这一回咱们说的例子是:多线程。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,我首先给大家拜个晚年,祝大家在新的一年里身体健康,万事如意。
今天我们介绍一下多线程,我相信大家都听过这个名词,但是具体的含义是什么呢?其实多线程是指两个或者两个以上的线程在一起运行,他们共同完成某个工作。
我们在前面的章回中介绍过使用pthread_create()函数去创建线程。如果想使用多线程,那么只需要多次使用该函数去创建线程就可以。接下来我们举例子来说明。
下面是核心的代码:
while(count > 0) { switch(count) { case 1: strcpy(param, "this is thread:1"); break; case 2: strcpy(param, "this is thread:2"); break; case 3: strcpy(param, "this is thread:3"); break; case 4: strcpy(param, "this is thread:4"); break; case 5: strcpy(param, "this is thread:5"); break; default: break; } res = pthread_create(&thread_value,null,thread_func,(void *)param); if(0 != res) { printf("%s ,it can't be created \n",param); return 1; } sleep(1); count--; }
我们在代码中给count赋值为5,然后通过循环语句来创建线程,这样就可以创建5个线程。另外,这些线程共享一个线程函数,只是传递给该函数的参数不同。下面是该函数的的代码,请大家参考:
void *thread_func(void *param) { int status; printf("%s \n",(char *)param); pthread_exit(&status); // end the thread }
函数只是简单地输出参数中的内容,用来表明不同的线程在运行,然后就结束线程。
看官们,正文中就不写代码了,完成的代码放到了我的资源中,大家可以下载使用。
下面是程序的运行结果,请大家参考:
create multi thread this is thread:5 //第五个线程在运行 this is thread:4 //第四个线程在运行 this is thread:3 //第三个线程在运行 this is thread:2 //第二个线程在运行 this is thread:1 //第一个线程在运行
各位看官,关于多线程的例子咱们就说到这里。我们只是简单地介绍如何去创建多线程,其实最麻烦的是如何去调度多个线程。因为线程的调度会涉及到操作相关的知识,因此,暂时先不做介绍。我们以后有机会了会给大家介绍多线程调度的知识。欲知后面还有什么例子,且听下回分解 。
推荐阅读
-
一起talk C栗子吧(第一百二十二回:C语言实例--多线程)
-
一起talk C栗子吧(第七十七回:C语言实例--DIY ls命令续)
-
一起talk C栗子吧(第九十 一回:C语言实例--数组的大小)
-
一起talk C栗子吧(第一百八十二回:C语言实例--在printf函数中设置输出宽度一)
-
一起talk C栗子吧(第一百一十六回:C语言实例--线程同步之互斥量二)
-
一起talk C栗子吧(第一百一十七回:C语言实例--线程死锁一)
-
一起talk C栗子吧(第一百八十三回:C语言实例--在printf函数中设置输出宽度二)
-
一起talk C栗子吧(第一百八十四回:C语言实例--在printf函数中设置输出宽度三)
-
一起talk C栗子吧(第一百九十六回:C语言实例--DIY less命令五 )
-
一起talk C栗子吧(第一百六十二回:C语言实例--套接字知识体系图)