对多线程编程的需求不多,因而在这方面的实例和教程很少。对于编程大牛来说,这也不是一个很深奥的实例。这里做一个简单实用的实例,它使用了 C11 标准头 threads.h ,适用于新的多线程标准。

threads_create() 是一个通用的创建线程模块。其中参数 fun 是一个函数指针,指向需要多线程运行的函数。其中参数 threads_num 是需要为 fun 创建的线程数。代码如下:

#include <threads.h>    //包含多线程支持库头文件void threads_create(void(*fun)(void *),int threads_num) {int ret;                    //保存thrd_create函数的返回值用于判断线程是否创建成功:0为成功,1为失败。long trdi;                  //用于线程thrd_t thr[threads_num];    //THREADS_NUM个线程for (trdi = 0;trdi<threads_num;trdi++) {ret = thrd_create(&thr[trdi], (thrd_start_t) fun, (void *)trdi); //将fun函数放在一个新的线程中执行if (ret == thrd_error) {printf("ERORR; thrd_create() call failed\n");exit(EXIT_FAILURE);}}for (trdi = 0; trdi < threads_num; trdi++) {thrd_join(thr[trdi], NULL);}thrd_exit(EXIT_SUCCESS);
}void thr_fun(void *arg) {      //线程主程序long tid;                  //这里是线程号,根据需要使用tid = (long)arg;/******* 线程代码*/
}

通过下面的语句一次性运行多个 thr_fun() 线程

//分线程运行:
threads_create(thr_fun,4);

线程的数量要考虑 CPU 支持的总线程数,并要考虑为系统其它程序留有充足的线程。

因为这是一个简单的通用模块(抛砖引玉),可以理解或视为“一行代码实现多线程编程”(只需要将它封装为一个头文件即可)。它并没有考虑其它复杂情形,如需要线程等待的情况。如需要复杂情形,请自行修改。

c语言 threads.h 创建简单的通用多线程模块实例相关推荐

  1. 创建简单demo通用步骤

    SpringMVC框架作用 解决了V-C的交互问题,即视图与控制器的交互问题. 优点: 1.SpringMVC框架提供了一整套完善的组件. 2.SpringMVC是以强大的Spring容器为基础的框架 ...

  2. VBA语言入门:一些简单语法在Excel应用实例

    首先,想看详细教程请转向:Excel VBA编程教程 接下来我想介绍一下VBA快速入门最基本的语法. 处理的主函数: Sub fun() ... End Sub 这个语法在c++中可以类比为main, ...

  3. 简单实用的多线程学习实例

    package syttest;/*** @author yuzhuliu:* @version 创建时间:2017年9月26日 下午11:58:21* 类说明*/public class Threa ...

  4. c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码

    在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include #include //线程头文件 //pthread不是linux下的默认的库,也就是 ...

  5. C11头文件threads.h声明了创建和管理线程,信号,条件变量的函数

    作者Danny Kalev 是通过以色列系统分析师协会认证的系统分析师, 并且是专攻C++的软件工程师. Kalev 写了多本C++的书籍,同时给不同的软件开发者站点投搞C++文章. 他是C++标准委 ...

  6. C语言用pthread.h创建线程

    C语言的线程库 pthread.h的API pthread.h的示例 C语言的线程库 在Linux系统上,可使用pthread.h的API创建线程.比如pthread_create(). pthrea ...

  7. C语言实现简单而通用的字典算法(附完整源码)

    C语言实现简单而通用的字典 "字典"的特殊数据类型定义 实现以下6个接口 完整头文件 完整源文件 main 测试文件 "字典"的特殊数据类型定义 typedef ...

  8. day01--java基础编程:计算机基础知识 ,java语言概述,java开发环境搭建,eclipse概述,创建简单java项目,JDK JRE JVM的关系,java开发中的命名规范,编程风格

    1 Day01–Java开发环境+HelloWorld 1.1 计算机基础知识 资料下载网址:刘沛霞 18600949004 code.tarena.com.cn tarenacode code_20 ...

  9. 《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程

    一.学习目标 了解DevC集成开发环境 了解集成开发环境 了解HelloWorld程序 了解HelloWorld程序的编写方法 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一 ...

最新文章

  1. java中的随机生成算法_Java生成随机时间的简单随机算法
  2. jQuery学习总结之基础知识----持续更新中
  3. ubuntu查看python版本-linux查看python安装路径,版本号
  4. 产销对接行动倡议书-万祥军:农民丰收节交易会谋定机制
  5. Spring MVC - Hello World示例
  6. 非易失性内存在阿里生产环境的首次应用:Tair NVM最佳实践总结
  7. w8计算机配置要求,win8系统最低配置要求有哪些|win8系统是否有最低配置要求-系统城...
  8. 小白猿简洁好看的个人介绍单页HTML5源码
  9. 基于TensorFlow的车牌识别系统 (附代码)
  10. 人工手摇机械式计算机,用袖珍式计算机处理螺旋伞齿轮调整卡
  11. java openxml_Excel单元格中的OpenXml和Date格式
  12. 寒江独钓windows 内核安全编程学习笔记(双机调试)
  13. laravel where in 查询缓慢优化
  14. C语言试题七十九之请编写函数实现自然底数 e=2.718281828
  15. 10_放置街灯(Placing Lampposts,UVa 10859)
  16. 自己收款码实现个人网站支付
  17. 4.5 没有自学,不是大学——《逆袭大学》连载
  18. 利用派生类实现统一接口解决三种基础排序问题
  19. PUK 码为8位数字
  20. HTML转pdf几种解决方案,java开发html转pdf 解决方案

热门文章

  1. 0 13 amp 0 17c语言,An RF Chipset for Impulse Radio UWB Using 0.13 amp;#x003BC;m InP-HEMT Technology...
  2. 送餐app+php,订餐APP源码Food Delivery App v2.1(客户端+服务端)
  3. Boy or Girl
  4. AD原理图以及PCB图元件(作为库)绘制流程
  5. truncate table oec_meoney 1
  6. discuz发帖流程_Discuz论坛发帖能力分享
  7. 使用Altium Designer软件绘制stm32的电路原理图
  8. 360文件粉碎机-独立分离版
  9. kk音标导读(下):赖世雄老师26个英语字母导读示范 (附我备注)
  10. 区块链(二、智能合约的开发)