sleep(0)或者没有sleep

/* thread_test.c */#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>#define    NUM_THREADS     16pthread_mutex_t mutex;void *PrintHello(void *args)
{int thread_arg;thread_arg = (int)(*((int*)args));while(1){//  pthread_mutex_lock(&mutex);//  pthread_mutex_unlock(&mutex);if(1 == thread_arg){printf("Hello from thread %d\n", thread_arg);}if(12 == thread_arg){printf("Hello from thread %d\n", thread_arg);}//sleep(0);}return NULL;
}int main(void)
{int rc,t;pthread_t thread[NUM_THREADS];pthread_mutex_init (&mutex, NULL);for( t = 0; t < NUM_THREADS; t++){printf("Creating thread %d\n", t);rc = pthread_create(&thread[t], NULL, PrintHello, &t);if (rc){printf("ERROR; return code is %d\n", rc);return EXIT_FAILURE;}sleep(1);}for( t = 0; t < NUM_THREADS; t++)pthread_join(thread[t], NULL);return EXIT_SUCCESS;
}

编译命令:gcc thread_test.c -o thread_test -pthread

打印一段时间的“Hello from thread 1”后再打印“Hello from thread 2”。

sleep(0)或者没有sleep,thread1和thread2都能抢到cpu。

测试环境是8核cpu。

thread 1和thread 12都能打印,8个cpu核都是100%使用。
似乎即使不用sleep,也不会一直占用cpu(导致线程间不能正常切换)。

参考:

pthread_create_百度百科 (baidu.com)

Linux c语言sleep多线程while循环实验相关推荐

  1. linux c语言 线程sleep有关测试总结

    1.线程中不使用sleep,不会造成线程切换问题. 2.线程中使用sleep,会使cpu的占有率降低.让其他线程或进程,运行得更有效. 3.使用sleep(0)和不使用sleep,效果差别不大,都不会 ...

  2. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  3. 511遇见易语言大漠多线程自动切换账号循环登录任务模板

    自动切换账号是多线程模板的一个变化应用,你有100个账号,每次开始10个线程,当第一批账号完成任务(登录,刷任务,退出)时,我们面临最困难的是如何在原有线程的基础上,自动开启下一批(第11-20)个账 ...

  4. 《Linux C编程环境》 课程大实验 及近期练习题:计算器,复写机,目录树创建,批处理执行器,扫雷

    <Linux C编程环境> 课程大实验 及近期练习题:计算器,复写机,目录树创建,批处理执行器,扫雷 ​ 之前作业的题了,征求了老师的意见,同意我把个人解析放开公布,再提交作业已经无效了. ...

  5. linux C语言 常用函数(系统调用等) 持续更新

    文章目录 系统调用是什么 Linux C语言 文件部分系统调用 1.open()打开文件 2.close()关闭文件 3.mkdir()创建目录 4.access()判断路径是否存在 5.fcntl( ...

  6. 实验一 进程同步与互斥c语言,进程互斥与进程同步实验

    第三章 同步.通信和死锁 实验一:进程互斥与进程同步 进程的互斥和同步是操作系统课程的重要内容,本实验设计算法实现临界区的互斥进入以及进程的同步. 注意:因为进程的管理的权限属于操作系统,用户没有权利 ...

  7. c语言程序设计编程解读,C语言程序设计第三次实验报告解读

    <C语言程序设计第三次实验报告解读>由会员分享,可在线阅读,更多相关<C语言程序设计第三次实验报告解读(15页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计实验报告专业 ...

  8. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  9. c语言应用报告,C语言:数组的应用实验报告.doc

    C语言:数组的应用实验报告.doc -1- 课程名称课程名称结构化程序设计与结构化程序设计与 C C 语言语言 开课实验室开课实验室 年年 月月 日日 年级年级.专业.班.专业.班 学号学号 姓名姓名 ...

最新文章

  1. Ubuntu管理开机自启动程序
  2. Netty:Java 领域网络编程的王者
  3. 3gpp文件头文件解析_居于LLVM 的命令行参数解析
  4. 用统计功能计算机计算js,js实现计算器功能
  5. C++ 通讯录设计(二)
  6. jquery 逗号分割截取字符串_Python中常用的8种字符串操作方法
  7. 2.0、Android Studio编写你的应用
  8. 分级时间轮优化普通时间轮定时器
  9. 英语句型之综合运用篇
  10. angular组件图标无法显示的问题
  11. 【0x50「动态规划」例题】LCIS【最长公共上升子序列】
  12. dojo实现省份地市级联---省份数据源
  13. [车]上海外地“苏牌”竟要万元
  14. 记录微信小程序createIntersectionObserver()方法的使用
  15. BootDo架构-基于 Springboot 和 Mybatis 的后台管理系统
  16. iOS生成图片分享到微信的一种方法
  17. 特斯拉Model X使用的是新密钥在几分钟内就被破解了
  18. Zabbix基于Dell系统管理OMSA监控物理服务器硬件
  19. 【CSS】总结前端三剑客之一(CSS基础)
  20. 黑马程序员--SpringBoot---基础篇

热门文章

  1. java opencv 保存图片
  2. UI设计大作业 Axure原型 “美食分享制作”app高保真原型设计
  3. 开源css库_使用CSS和其他开源工具创建标志
  4. 在Vue中使用HappyPack
  5. CF922D Robot Vacuum Cleaner 贪心+排序
  6. mysql的CURDATE()+1,月末不生效问题
  7. curl post表单上传文件(C++)
  8. “她力量”:创邻科技联合创始人吴菁获评创业邦“2022最值得关注的女性创业者”榜单
  9. cesium,实现下雨下雪效果切换
  10. Android_2D绘图的学习Paint,Canvas(二)