這篇文章,按照下面這 2 張圖,來描述 glib 在 Linux 和 Windows 平臺上,是如何來進(jìn)行線程庫的設(shè)計(jì)的。Linux 平臺:Windows 平臺:最近寫了幾篇關(guān)于跨平臺的應(yīng)用程序設(shè)計(jì)思路,有些小伙伴在后臺留言詢問關(guān)于一些通用的跨平臺庫,看來這方面的需求還是很多的。所謂的跨平臺,無非就是希望用同一份應(yīng)用程序的代碼,可以編譯出在多個(gè)平臺上運(yùn)行的可執(zhí)行程序。那么如何才能做到應(yīng)用程序代碼的平臺無關(guān)呢?很明顯需要中間的一個(gè)橋接層,把自己不想處理的、那些與平臺相關(guān)的、煩人的代碼丟給這個(gè)中間層去處理。簡單的說:就是那些需要處理與平臺相關(guān)的臟活、累活,都由這個(gè)中間層幫你做好了,我們在寫應(yīng)用程序時(shí),只需要關(guān)心自己的業(yè)務(wù)層事務(wù)就可以了。如果沒有這個(gè)中間層的話,你的代碼中可能會充斥著大量的#if...#else代碼。而 glib 就是這樣的一個(gè)中間層跨平臺庫,它提供了很多常用的封裝,線程庫只是其中的封裝之一,這篇文章我們主要來學(xué)習(xí)一下 glib 是如何來設(shè)計(jì)跨平臺的線程庫。
二、glib 簡介
第一眼看上去的時(shí)候,很容易把 glib 與 glibc 混淆,它倆都是基于 GPL 的開源軟件,但是卻屬于完全不同的概念。glibc是GNU實(shí)現(xiàn)的一套標(biāo)準(zhǔn)C的函數(shù)庫,而glib是gtk 的一套函數(shù)庫。那么 gtk 是什么呢?使用 Linux 的小伙伴一定知道 gnome 這個(gè)桌面環(huán)境,gnome 就是基于 gtk 開發(fā)的一套桌面系統(tǒng),而 glib 就是位于 gtk 后面的那位無名英雄。glib可以在多個(gè)平臺下使用,比如Linux、Unix、Windows等。glib為許多標(biāo)準(zhǔn)的、常用的 C 語言結(jié)構(gòu)提供了相應(yīng)的替代物。作為一名 C 語言開發(fā)者,有時(shí)候我們會非常的羨慕 C 開發(fā)者,標(biāo)準(zhǔn)庫(SDL)有辣么多的工具可用:鏈表、向量、字符串處理。。。可是 C 語言里呢?哪哪都要自己去實(shí)現(xiàn)這些輪子。不過反過來說,如果我們在日常的開發(fā)過程中,把自己編寫的、從別處借鑒的那些好用的輪子都積累起來,形成自己的“寶庫”,這也是一種經(jīng)驗(yàn)的體現(xiàn)、也是一種競爭力。如今,在 github 上也有很多雷鋒實(shí)現(xiàn)了高質(zhì)量的 C 庫:有專注于跨平臺的、有專注于某個(gè)領(lǐng)域的(比如:網(wǎng)絡(luò)處理、格式化文本解析)。glib 在解決跨平臺的同時(shí),也提供了其他很多有用的工具箱,例如:事件循環(huán)、線程池、同步隊(duì)列、內(nèi)存管理等等。既然它提供的功能多,那么必然會導(dǎo)致體積比較大。這也是很多開發(fā)者面對不同的選擇時(shí),放棄 glib 的原因。不管如何,既然 glib 這么厲害,我們可以來學(xué)習(xí)它的設(shè)計(jì)思想,這可是比盲目的敲幾千行代碼更能提升一個(gè)人的元技能!
三、線程庫的設(shè)計(jì)
1. 線程相關(guān)的文件
在 Linux 系統(tǒng)中,創(chuàng)建線程一般都是通過 POSIX 接口(可移植操作系統(tǒng)接口),例如:創(chuàng)建線程 API 函數(shù)是 pthread_create(...)。在 Windows 系統(tǒng)中,創(chuàng)建線程有好幾種方式:
LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...
LED燈作為一種新型節(jié)能和無污染光源,由于其特有的發(fā)光照明特性,在現(xiàn)代照明應(yīng)用中發(fā)揮著革命性的作用。作為 LED 照明產(chǎn)業(yè)鏈中最為核心的部件之一,LED 驅(qū)動(dòng)電源的驅(qū)動(dòng)控制技術(shù)所存在的可靠性低、成本高等典型問題一直制約著...
早前有新聞稱,Cree在2018年開始宣布轉(zhuǎn)型高科技半導(dǎo)體領(lǐng)域,并一邊逐漸脫離照明與LED相關(guān)業(yè)務(wù),一邊持續(xù)投資半導(dǎo)體。在今日,Cree宣布與SMART Global Holdings, Inc.達(dá)成最終協(xié)議,擬將LED...