通用跨平台库glib如何设计跨平台线程库?
一、前言
这篇文章,按照下面这 2 张图,来描述 glib 在 Linux 和 Windows 平台上,是如何来进行线程库的设计的。
Linux 平台:
Windows 平台:
最近写了几篇关于跨平台的应用程序设计思路,有些小伙伴在后台留言询问关于一些通用的跨平台库,看来这方面的需求还是很多的。
所谓的跨平台,无非就是希望用同一份应用程序的代码,可以编译出在多个平台上运行的可执行程序。
那么如何才能做到应用程序代码的平台无关呢?很明显需要中间的一个桥接层,把自己不想处理的、那些与平台相关的、烦人的代码丢给这个中间层去处理。
简单的说:就是那些需要处理与平台相关的脏活、累活,都由这个中间层帮你做好了,我们在写应用程序时,只需要关心自己的业务层事务就可以了。
如果没有这个中间层的话,你的代码中可能会充斥着大量的#if...#else代码。
而 glib 就是这样的一个中间层跨平台库,它提供了很多常用的封装,线程库只是其中的封装之一,这篇文章我们主要来学习一下 glib 是如何来设计跨平台的线程库。
二、glib 简介
第一眼看上去的时候,很容易把 glib 与 glibc 混淆,它俩都是基于 GPL 的开源软件,但是却属于完全不同的概念。
glibc是GNU实现的一套标准C的函数库,而glib是gtk+的一套函数库。
那么 gtk+ 是什么呢?使用 Linux 的小伙伴一定知道 gnome 这个桌面环境,gnome 就是基于 gtk+ 开发的一套桌面系统,而 glib 就是位于 gtk 后面的那位无名英雄。
glib可以在多个平台下使用,比如Linux、Unix、Windows等。glib为许多标准的、常用的 C 语言结构提供了相应的替代物。
作为一名 C 语言开发者,有时候我们会非常的羡慕 C++ 开发者,标准库(SDL)有辣么多的工具可用:链表、向量、字符串处理。。。
可是 C 语言里呢?哪哪都要自己去实现这些轮子。
不过反过来说,如果我们在日常的开发过程中,把自己编写的、从别处借鉴的那些好用的轮子都积累起来,形成自己的“宝库”,这也是一种经验的体现、也是一种竞争力。
如今,在 github 上也有很多雷锋实现了高质量的 C 库:有专注于跨平台的、有专注于某个领域的(比如:网络处理、格式化文本解析)。
glib 在解决跨平台的同时,也提供了其他很多有用的工具箱,例如:事件循环、线程池、同步队列、内存管理等等。
既然它提供的功能多,那么必然会导致体积比较大。这也是很多开发者面对不同的选择时,放弃 glib 的原因。
不管如何,既然 glib 这么厉害,我们可以来学习它的设计思想,这可是比盲目的敲几千行代码更能提升一个人的元技能!
三、线程库的设计
1. 线程相关的文件
在 Linux 系统中,创建线程一般都是通过 POSIX 接口(可移植操作系统接口),例如:创建线程 API 函数是 pthread_create(...)。
在 Windows 系统中,创建线程有好几种方式:
CreateThread()
_beginthread()
既然 glib 库时专门用来解决跨平台问题的,那么它向上面对应用层程序时,一定是提供一个统一的接口;而向下面对不同的操作系统时,调用不同系统中的线程函数。
glib 把这些线程相关的操作分别封装在了平台相关的代码中,具体来说如下图:
Linux 系统:gthread.c, gthread_posix.c 参与编译,生成 glib 库;
Windows 系统:gthread.c, gthread_win32.c 参与编译,生成 glib 库;
关于这种跨平台的文件构建方式(也就是编译啦),建议您看一下这篇小短文:跨平台代码的3种组织方式
图片新闻
最新活动更多
-
11月22日立即报名>> 【线下论坛】华邦电子与莱迪思联合技术论坛
-
即日-11.30免费预约申请>>> 燧石技术-红外热成像系列产品试用活动
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
限时免费下载立即下载 >>> 2024“机器人+”行业应用创新发展蓝皮书
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
- 1 同源共创 模式革新 | 华天软件皇冠CAD(CrownCAD)2025新品发布会圆满举行
- 2 上海国际嵌入式展暨大会(embedded world China )与多家国际知名项目达成合作
- 3 iEi威强电新品丨IMBA-AM5:工业计算的强劲引擎
- 4 史上首次,大众终于熬不住开启40亿降本计划!关3个工厂,裁员万名...
- 5 守护绿色学习空间,EK超低温热泵服务对外经济贸易大学图书馆
- 6 颜值高 有“门”道|贝特威汽车门板内饰AI视觉检测解决方案
- 7 观众登记启动 优解制造未来,锁定2025 ITES深圳工业展
- 8 “秸”尽全力,防患未“燃” | 秸秆焚烧智能监控解决方案
- 9 揭秘:「全球知名跨境电商」构建核心竞争力的“独门绝技”是?
- 10 3大场景解读 | 红外热像仪赋能科研智造创新应用
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论