當前位置:首頁 » 操作系統 » 互斥體源碼

互斥體源碼

發布時間: 2024-07-01 22:58:08

㈠ 如何在linux上使用boost:thread-C/C++

  • 首先需要安裝boost,步驟如下:

下載到boost_1_49_0.tar.bz2 (當然,其他壓縮格式也可以)後,可以把它放在用戶目錄下,即:~/

解壓縮:tar -jxvf boost_1_49_0.tar.bz2

這樣,出現文件夾:~/boost_1_49_0

然後進入:$ cd boost_1_49_0

你會發現有一個sh命令:bootstrap.sh

運行它:$ ./bootstrap.sh (boost自己的get start文檔中說設置參數 --prefix=dir 其中dir為你想指定的安裝文件夾,我建議就不用加這個參數,它會默認安裝到/usr/local)

結束後出現一個可執行文件: ~/boost_1_49_0/b2

運行這個文件: $ sudo ./b2 install (Ubuntu用戶千萬別忘了加sudo,不然安裝後將無法完全使用)

編譯安裝時間比較長,根據不同機器的情況20~40分鍾。結束後即安裝完畢。


  • boost::thread的使用

#include<boost/thread.hpp>
#include<iostream>

voidtask1(){
//dostuff
std::cout<<"Thisistask1!"<<std::endl;
}

voidtask2(){
//dostuff
std::cout<<"Thisistask2!"<<std::endl;
}

intmain(intargc,char**argv){
usingnamespaceboost;
threadthread_1=thread(task1);
threadthread_2=thread(task2);

//dootherstuff
thread_2.join();
thread_1.join();
return0;
}

編譯時的命令為:
$ g++ -I./inlcude -L./lib example.cpp -lboost_thread -o example
編譯之後會出現一個 example 的可執行文件,可以運行:./example , 結果顯示:
This is task2!
This is task1!

可能你在運行時會出現這樣的錯誤:error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory

這是因為要用到的庫不在默認的環境變數里,可以使用下面的命令添加:
$ sudo ldconfig /usr/local/lib

添加後,再執行./example,這樣你就完成了你的第一個boost::thread程序。

㈡ C/C++/Linux/編程/開源方面的問題:Mozilla和GNU的區別

許多混亂就始於你不知道License到底是什麼,到底有什麼含義。當你對你的產品使用License時,並不意味著你放棄了任何權利,你依然對其擁有原著作權。License只是授予他們於特定權利來使用你的產品。

License只是把你的作品釋放到公有領域,或者給各個拷貝賦予許可權。也意味著你放棄了版權收入,別人也沒有義務把你列為原作者或貢獻者。

開放源代碼許可協議更容易為他人作出貢獻,而不必尋求特別的許可。它也可以保護你作為原創者的權利,至少確認了你的貢獻。它還可以保證你的工作不為別人所剽竊。
GNU General Public License

GNU General Public License (GPL)的可能是開源項目最常用的許可證。GPL賦予和保證了開源項目開發者廣泛的權利。基本上,它允許用戶合法復制,分發和修改軟體。 這意味著你可以:

* 復制軟體

復制軟體到自己的伺服器,客戶端的伺服器,你自己的電腦,幾乎任何你想要的地方,而且沒有數量限制。
* 發布軟體

發布你想要的軟體,例如,在你的網站提供下載鏈接,刻成光碟,列印出來等等。
* 收取費用

如果你想在向別人提供軟體時收費,如設置在別人的網站上或者其他用途時。GPL允許你這么做,但是你必須給客戶提供一個GPL副本,告訴他們可以在其他地方得到免費版本。當然最好在此之前,告訴客戶,你為什麼收費。
* 可以任意修改

如果你想添加或刪除功能,沒問題。如果想在其他項目中使用部分代碼,也是可以的,但是唯一的限制是此項目也必須按GPL發布。

商業軟體不能使用GPL協議的代碼。
GNU Lesser General Public License

還有另一個GNU License:GNU Lesser General Public License (LGPL)。比起GPL它授予的許可權較少。一般來說,LGPL比較適合連接到非GPL或者非開源文件的庫文件。由於GPL的規定,使用到部分GPL代碼的軟體,必須也使用GPL,開發人員不能使用GPL來開發收費軟體或者專有軟體。LGPL則沒有這方面的要求,不要求使用與部分代碼相同的 License。

商業軟體可以使用,但不能修改LGPL協議的代碼。
BSD License

BSD License與其他自由軟體License相比,如GPL,限制更少。但是請注意到BSD License兩種版本之間的差別:New BSD License/Modified BSD License 和Simplified BSD License/FreeBSD License。它們兩者都是於GPL兼容的自由軟體License。

New BSD License (」3-clause license」) 可以用於任何作為版權聲明和保證許可的免責聲明的目的,可以通過無限長的再分發來得以維持,也就是說如果再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協 議。它還有一個特殊限制條款,不用特別的許可就是限制使用派生工作的工作者名字,也就是說不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。

New BSD License和Simplified BSD License的主要區別是,後者忽略了非認可條款。

商業軟體可以使用,也可以修改使用BSD協議的代碼。
MIT License

MIT是和BSD一樣寬松的許可協議,作者只想保留版權,而無任何其他了限制.也就是說,你必須在你的發行版里包含原許可協議的聲明,無論你是以二進制發布的還是以源代碼發布的。

* 你可以使用,復制和修改軟體
* 你可以免費使用軟體或出售
* 唯一的限制是,它是必須附有MIT授權協議

商業軟體可以使用,也可以修改MIT協議的代碼,甚至可以出售MIT協議的代碼。
Mozilla Public License 1.1 (MPL)

MPL協議允許免費重發布、免費修改,但要求修改後的代碼版權歸軟體的發起者。這種授權維護了商業軟體的利益,,它要求基於這種軟體得修改無償貢獻版權給該軟體。這樣,圍繞該軟體得所有代碼得版權都集中在發起開發人得手中。但MPL是允許修改,無償使用得。MPL軟體對鏈接沒有要求。

商業軟體可以使用,也可以修改MPL協議的代碼,但修改後的代碼版權歸軟體的發起者。
Common Development and Distribution License

CDDL(Common Development and Distribution License,通用開發與銷售許可)開源協議,是MPL(Mozilla Public License)的擴展協議,它允許公共版權使用,無專利費,並提供專利保護,可集成於商業軟體中,允許自行發布許可。

商業軟體可以使用,也可以修改CDDL協議的代碼。
Apache License

Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布 (作為開源或商業軟體)。需要滿足的條件:

* 需要給代碼的用戶一份Apache License。
* 如果你修改了代碼,需要在被修改的文件中說明。
* 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
* 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache License。你可以在Notice中增加自己的許可,但不可以表現為對Apache License構成更改。

Apache Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要並作為開源或商業產品發布/銷售。

商業軟體可以使用,也可以修改使用Apache協議的代碼。
Eclipse Public License

EPL是一個與CPL相類似的許可證,任何擴展自Eclipse源碼的代碼也必須是開源的。
Creative Commons

Creative Commons(CC)的許可證不太開放源代碼授權,它們通常用於設計項目。 CC許可證有著寬廣的定義,每個定義都會授予一定的權利。它有四個基本部分,可以單獨或者組合使用。下面是部分概述:

* 署名

作者必須是作品的原創者。 除此之外,作品可以修改,分發,復制和以其他方式使用。
* 相同方式共享

工作可以修改,分發等等,但必須在一個許可證下。
* 非商業

可以修改,分發等,但不用於商業目的。 關於什麼是「商業」,說法比較含糊(沒有提供明確的定義),因此您可能需要在自己的項目中澄清這一點。
* 禁止修改

這意味著您可以復制和分發許可工作,但你不能以任何方式修改,或在原有的基礎開發。

商業軟體的使用要遵從CC協議的具體規定,最嚴格的許可證將是「署名,非商業,不能修改」的授權。這意味著你可以自由共享的工作,但不能改變它,你必須把它歸功於原創者。
Common Public License 1.0

Common許可證有一些細節性的規定值得參考:

* 明確了專利授權。一般的開源軟體都明確源代碼的版權人將自己的修改權、復制權等版權權利向公眾許可,但保留署名權,而Common許可證在此基礎上還明確假如源代碼中含有專利權,源代碼專利權人將復制、使用的專有權利向公眾許可。
* 規定可以將源代碼及修改過的源代碼與其他類型的不受本許可證約束的代碼結合,以新產品的形式發布,只要其中經該許可證獲得的源代碼及修改過的源代碼能按該許可證的要求發布即可。
* 細化了該許可證終止的情形,包括發生專利侵權訴訟。
* 明確了一個獨立承擔責任的原則,就是假如按該許可證使用源代碼的使用者將獲得的源代碼應用於商業使用,那麼他就要對在商業應用中出現的由於使用該源代碼程序而產生的侵權訴訟承擔完全責任。這一條規定是比較特殊的,絕大多數開源軟體許可證都不這么要求。

商業軟體可以使用,也可以修改Common協議的代碼,但要承擔代碼產生的侵權責任。

熱點內容
安卓手機怎麼下載不了拼拼有禮 發布:2024-07-03 23:24:04 瀏覽:367
預覽壓縮包工具 發布:2024-07-03 23:23:15 瀏覽:612
雲伺服器開發案例 發布:2024-07-03 23:19:21 瀏覽:977
編譯原理nfa 發布:2024-07-03 22:59:14 瀏覽:627
光貓存儲燈亮 發布:2024-07-03 22:41:25 瀏覽:460
openjdkwindows編譯 發布:2024-07-03 22:39:46 瀏覽:536
資料庫關系的功能 發布:2024-07-03 22:20:41 瀏覽:325
如何查找微信賬號密碼申訴進度 發布:2024-07-03 22:19:45 瀏覽:215
我的世界伺服器要錢嗎 發布:2024-07-03 22:18:20 瀏覽:25
ftp跟web有什麼區別 發布:2024-07-03 22:07:22 瀏覽:591