初探线程——pthread_create

本文详细解析Linux中线程的概念,通过代码示例展示如何创建线程,并对比线程与进程的区别,强调线程在切换速度、同步方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux中,线程实际上就是一个轻量级的进程,因为他们都是通过调用do_fork()函数,传入不同的参数实现的。
首先看个最基础的线程的实现:

 

 

 #include<stdio.h>
 #include<pthread.h>
 
 
 void *print_thread_id(void *arg)
 {
         /* 打印当前线程的线程号*/
         printf("Current thread id is %u\n", (unsigned)pthread_self());
 }
 
 int main(int argc, char *argv[])
 {
         pthread_t thread;               /*保存线程号*/
 
         /*创建一个线程  */
         pthread_create(&thread, NULL, print_thread_id, NULL);
 
         sleep(1);                         /*休眠1s*/
 
         /*打印进程号    */
         printf("Main thread id is %u\n", (unsigned)pthread_self());
 
         return 0;
 }
 

 

 


   编译的时候,一定要加上-lpthread选项,不然会报错:undefined reference to `pthread_create'。

  下面来看看pthread_create的声明:

  #include<pthread.h>


   int pthread_create(pthread_t *thread, pthread_addr_t *arr,

           void* (*start_routine)(void *), void *arg);

 
thread   :用于返回创建的线程的ID
arr       : 用于指定的被创建的线程的属性,上面的函数中使用NULL,表示使用默认的属性
start_routine   : 这是一个函数指针,指向线程被创建后要调用的函数
arg      : 用于给线程传递参数,在本例中没有传递参数,所以使用了NULL


 

   线程相对进程来说,有几大优点,一是其切换速度快,其保存现场花费的时间比进程少得多,
 二是:线程间的同步比进程简单(至少我是这样认为的)。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值