c线程中sleep()和pthread_join()函数之我见

本文探讨了C线程中sleep()函数如何让当前线程挂起,释放CPU执行权,以及pthread_join()在等待线程结束中的作用。通过测试程序展示了当主线程使用sleep()时,如何允许子线程执行,解释了在无sleep()时,主线程结束导致子线程无法执行的原因。同时,讨论了线程在时间片用完后交出CPU的执行流程。

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

线程之我见,有错误,请指正,谢谢

线程的执行需要cpu资源,而cpu的利用时各个线程进行“轮询”即轮时间片,抛开优先级不说,一个线程如果执行的时候,分配给他的时间片到了,他就要交出cpu执行权,由其他等待cpu的线程来执行,(一个cpu一次只能执行一个线程)。

而sleep()的作用是让当前执行cpu的线程挂起,交出cpu,让其他等待cpu的线程执行,

测试程序:

 1 #include<stdio.h>
 2 #include<pthread.h>
 3 #include<stdlib.h>
 4 void *fun(void *p){
 5     int i=0;
 6     for(i;i<10;i++){
 7         printf("fun i=%d\n",i);
 8     }
 9     printf("fun bye bye\n");
10     return NULL;
11 }
12 int main(){
13     pthread_t th;
14     if(pthread_create(&th,NULL,fun,NULL)<0){
  
  //pthread_create()函数参数请百度
15         perror("
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值