青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

統(tǒng)計(jì)

  • 隨筆 - 50
  • 文章 - 42
  • 評(píng)論 - 147
  • 引用 - 0

留言簿(6)

隨筆分類

文章分類

Link

搜索

  •  

積分與排名

  • 積分 - 167186
  • 排名 - 159

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Windows下 POSIX 線程編程

1. POSIX 標(biāo)準(zhǔn)

        POSIX是Portable Operating System Interface of Unix的縮寫(xiě)。由IEEE(Institute of Electrical and Electronic Engineering)開(kāi)發(fā),由ANSI和ISO標(biāo)準(zhǔn)化。
        POSIX的誕生和Unix的發(fā)展是密不可分的,Unix于70年代誕生于Bell lab,并于80年代向美各大高校分發(fā)V7版的源碼以做研究。UC Berkeley在V7的基礎(chǔ)上開(kāi)發(fā)了BSD Unix。后來(lái)很多商業(yè)廠家意識(shí)到Unix的價(jià)值也紛紛以Bell Lab的System V或BSD為基礎(chǔ)來(lái)開(kāi)發(fā)自己的Unix,較著名的有Sun OS,AIX,VMS。由于各廠家對(duì)Unix的開(kāi)發(fā)各自為政,造成了Unix的版本相當(dāng)混亂,給軟件的可移植性帶來(lái)很大困難,對(duì)Unix的發(fā)展極為不利。為結(jié)束這種局面,IEEE開(kāi)發(fā)了POSIX,POSIX在源代碼級(jí)別上定義了一組最小的Unix(類Unix)操作系統(tǒng)接口。
        POSIX 表示可移植操作系統(tǒng)接口(Portable Operating System Interface ,縮寫(xiě)為 POSIX 是為了讀音更像 UNIX)。電氣和電子工程師協(xié)會(huì)(Institute of Electrical and Electronics Engineers,IEEE)最初開(kāi)發(fā) POSIX 標(biāo)準(zhǔn),是為了提高 UNIX 環(huán)境下應(yīng)用程序的可移植性。然而,POSIX 并不局限于 UNIX。許多其它的操作系統(tǒng),例如 DEC OpenVMS 和 Microsoft Windows NT,都支持 POSIX 標(biāo)準(zhǔn),尤其是 IEEE Std. 1003.1-1990(1995 年修訂)或 POSIX.1,POSIX.1 提供了源代碼級(jí)別的 C 語(yǔ)言應(yīng)用編程接口(API)給操作系統(tǒng)的服務(wù)程序,例如讀寫(xiě)文件。POSIX.1 已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織(International Standards Organization,ISO)所接受,被命名為 ISO/IEC 9945-1:1990 標(biāo)準(zhǔn)。
        POSIX 現(xiàn)在已經(jīng)發(fā)展成為一個(gè)非常龐大的標(biāo)準(zhǔn)族,某些部分正處在開(kāi)發(fā)過(guò)程中。表 1-1 給出了 POSIX 標(biāo)準(zhǔn)的幾個(gè)重要組成部分。POSIX 與 IEEE 1003 和 2003 家族的標(biāo)準(zhǔn)是可互換的。除 1003.1 之外,1003 和 2003 家族也包括在表中。

表1:標(biāo)準(zhǔn)的重要組成部分
1003.0
管理 POSIX 開(kāi)放式系統(tǒng)環(huán)境(OSE)。IEEE 在 1995 年通過(guò)了這項(xiàng)標(biāo)準(zhǔn)。 ISO 的版本是 ISO/IEC 14252:1996。
1003.1
被廣泛接受、用于源代碼級(jí)別的可移植性標(biāo)準(zhǔn)。1003.1 提供一個(gè)操作系統(tǒng)的 C 語(yǔ)言應(yīng)用編程接口(API)。IEEE 和 ISO 已經(jīng)在 1990 年通過(guò)了這個(gè)標(biāo)準(zhǔn),IEEE 在 1995 年重新修訂了該標(biāo)準(zhǔn)。
1003.1b
一個(gè)用于實(shí)時(shí)編程的標(biāo)準(zhǔn)(以前的 P1003.4 或 POSIX.4)。這個(gè)標(biāo)準(zhǔn)在 1993 年被 IEEE 通過(guò),被合并進(jìn) ISO/IEC 9945-1。
1003.1c
一個(gè)用于線程(在一個(gè)程序中當(dāng)前被執(zhí)行的代碼段)的標(biāo)準(zhǔn)。以前是 P1993.4 或 POSIX.4 的一部分,這個(gè)標(biāo)準(zhǔn)已經(jīng)在 1995 年被 IEEE 通過(guò),歸入 ISO/IEC 9945-1:1996。
1003.1g
一個(gè)關(guān)于協(xié)議獨(dú)立接口的標(biāo)準(zhǔn),該接口可以使一個(gè)應(yīng)用程序通過(guò)網(wǎng)絡(luò)與另一個(gè)應(yīng)用程序通訊。 1996 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。
1003.2
一個(gè)應(yīng)用于 shell 和 工具軟件的標(biāo)準(zhǔn),它們分別是操作系統(tǒng)所必須提供的命令處理器和工具程序。 1992 年 IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。ISO 也已經(jīng)通過(guò)了這個(gè)標(biāo)準(zhǔn)(ISO/IEC 9945-2:1993)。
1003.2d
改進(jìn)的 1003.2 標(biāo)準(zhǔn)。
1003.5
一個(gè)相當(dāng)于 1003.1 的 Ada 語(yǔ)言的 API。在 1992 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。并在 1997 年對(duì)其進(jìn)行了修訂。ISO 也通過(guò)了該標(biāo)準(zhǔn)。
1003.5b
一個(gè)相當(dāng)于 1003.1b(實(shí)時(shí)擴(kuò)展)的 Ada 語(yǔ)言的 API。IEEE 和 ISO 都已經(jīng)通過(guò)了這個(gè)標(biāo)準(zhǔn)。ISO 的標(biāo)準(zhǔn)是 ISO/IEC 14519:1999。
1003.5c
一個(gè)相當(dāng)于 1003.1q(協(xié)議獨(dú)立接口)的 Ada 語(yǔ)言的 API。在 1998 年, IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。ISO 也通過(guò)了這個(gè)標(biāo)準(zhǔn)。
1003.9
一個(gè)相當(dāng)于 1003.1 的 FORTRAN 語(yǔ)言的 API。在 1992 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn),并于 1997 年對(duì)其再次確認(rèn)。ISO 也已經(jīng)通過(guò)了這個(gè)標(biāo)準(zhǔn)。
1003.10
一個(gè)應(yīng)用于超級(jí)計(jì)算應(yīng)用環(huán)境框架(Application Environment Profile,AEP)的標(biāo)準(zhǔn)。在 1995 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。
1003.13
一個(gè)關(guān)于應(yīng)用環(huán)境框架的標(biāo)準(zhǔn),主要針對(duì)使用 POSIX 接口的實(shí)時(shí)應(yīng)用程序。在 1998 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。
1003.22
一個(gè)針對(duì) POSIX 的關(guān)于安全性框架的指南。
1003.23
一個(gè)針對(duì)用戶組織的指南,主要是為了指導(dǎo)用戶開(kāi)發(fā)和使用支持操作需求的開(kāi)放式系統(tǒng)環(huán)境(OSE)框架
2003
針對(duì)指定和使用是否符合 POSIX 標(biāo)準(zhǔn)的測(cè)試方法,有關(guān)其定義、一般需求和指導(dǎo)方針的一個(gè)標(biāo)準(zhǔn)。在 1997 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。
2003.1
這個(gè)標(biāo)準(zhǔn)規(guī)定了針對(duì) 1003.1 的 POSIX 測(cè)試方法的提供商要提供的一些條件。在 1992 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。
2003.2
一個(gè)定義了被用來(lái)檢查與 IEEE 1003.2(shell 和 工具 API)是否符合的測(cè)試方法的標(biāo)準(zhǔn)。在 1996 年,IEEE 通過(guò)了這個(gè)標(biāo)準(zhǔn)。

       除了 1003 和 2003 家族以外,還有幾個(gè)其它的 IEEE 標(biāo)準(zhǔn),例如 1224 和 1228,它們也提供開(kāi)發(fā)可移植應(yīng)用程序的 API。要想得到關(guān)于 IEEE 標(biāo)準(zhǔn)的最新信息,可以訪問(wèn) IEEE 標(biāo)準(zhǔn)的主頁(yè),網(wǎng)址是 http://standards.ieee.org/。有關(guān) POSIX 標(biāo)準(zhǔn)的概述信息,請(qǐng)?jiān)L問(wèn) Web 站點(diǎn) http://standards.ieee.org/reading/ieee/stad_public/description/posix/

2. Liniux下的線程編程

        Linux系統(tǒng)下的多線程遵循POSIX線程接口,稱為pthread。從上面的描述不難知道,POSIX線程接口是POSIX眾多標(biāo)準(zhǔn)中的一個(gè)(POSIX 1003.1-2001

        編寫(xiě)Linux下的多線程程序,需要使用頭文件pthread.h,連接時(shí)需要使用庫(kù)libpthread.a。順便說(shuō)一下,Linux下pthread的實(shí)現(xiàn)是通過(guò)系統(tǒng)調(diào)用 clone() 來(lái)實(shí)現(xiàn)的。clone() 是Linux所特有的系統(tǒng)調(diào)用,它的使用方式類似fork,關(guān)于 clone() 的詳細(xì)情況,有興趣的讀者可以去查看有關(guān)文檔說(shuō)明。

下面是一個(gè) POSIX 線程的簡(jiǎn)單示例程序(thread1.c):

#include <pthread.h>
#include 
<stdlib.h>
#include 
<unistd.h>
 
void *thread_function(void *arg) {
  
int i;
  
for ( i=0; i<20; i++{
    printf(
"Thread says hi! ");
    sleep(
1);
  }

  
return NULL;
}

int main(void{
  pthread_t mythread;
  
  
if ( pthread_create( &mythread, NULL, thread_function, NULL) ) {
    printf(
"error creating thread.");
    abort();
  }

  
if ( pthread_join ( mythread, NULL ) ) {
    printf(
"error joining thread.");
    abort();
  }

  exit(
0);
}

 要編譯這個(gè)程序,只需先將程序存為 thread1.c,然后輸入:

$ gcc thread1.c -o thread1 -lpthread

運(yùn)行則輸入:

$ ./thread1

3. Windows下POSIX線程編程

       Windows本身沒(méi)有提供對(duì)POSIX的支持。但有一個(gè)叫 POSIX Threads for Win32 的開(kāi)源項(xiàng)目給出了一個(gè)功能比較完善的Windows下pthreads API的實(shí)現(xiàn)。目前的最新版本是Pthreads-w32 release 2.8.0 (2006-12-22)。

       我沒(méi)有測(cè)試過(guò)這個(gè)最新版本,這里只給出2.7.0版的鏈接:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe

       關(guān)于該開(kāi)源項(xiàng)目的詳細(xì)介紹見(jiàn):http://sources.redhat.com/pthreads-win32/

3.1 簡(jiǎn)單使用

       上面的exe文件是一個(gè)自解壓文件,解壓后,Pre-built.2目錄中有編譯所需要的頭文件(include子目錄)和庫(kù)文件(lib子目錄)。

       一個(gè)簡(jiǎn)單的測(cè)試程序(main.cpp):

#include <stdio.h>
#include 
<pthread.h>
#include 
<assert.h>

void* Function_t(void* Param)
{
    printf(
"I am a thread!  ");
    pthread_t myid 
= pthread_self();
    printf(
"thread ID=%d ", myid);
    
return NULL;
}


int main()
{
    pthread_t pid;
    pthread_attr_t attr;
    pthread_attr_init(
&attr);
    pthread_attr_setscope(
&attr, PTHREAD_SCOPE_PROCESS);
    pthread_attr_setdetachstate(
&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(
&pid, &attr, Function_t, NULL);
    printf(
"======================================== ");
    getchar();
    pthread_attr_destroy(
&attr);
    
return 1;
}
 

使用 cl.exe 編譯(不熟悉 cl.exe 的請(qǐng)參考:http://blog.csdn.net/liuyongjin1984/archive/2008/01/07/2029405.aspx 或者參見(jiàn)下面3.2部分):

rem cl.bat

》cl.exe main.cpp  
//I"c:pthreads-w32-2-7-0-releasePre-built.2include"

》link.exe 
/out:main_cl.exe  main.obj  /LIBPATH:"c:pthreads-w32-2-7-0-releasePre-built.2lib"   pthreadVC2.lib

 3.2 使用VC++ 6.0或Visual Studio 2005來(lái)運(yùn)行上面的程序

關(guān)鍵有兩點(diǎn):

1. 是將頭文件(include子目錄)和庫(kù)文件(lib子目錄)中的內(nèi)容添加到VC++ 6.0或Visual Studio 2005開(kāi)發(fā)環(huán)境對(duì)應(yīng)的include和lib目錄下。

具體來(lái)說(shuō)(以添加include目錄為例,添加lib目錄類似):

圖1:VC++ 6.0(添加include目錄:工具--》選項(xiàng)--》目錄)

 

 

圖2:Visual Studio 2005(添加include目錄:tools--》options)

 

 

2. 指定link時(shí)要連接的庫(kù)的名稱(pthreadVC2.lib)

圖3:VC++ 6.0(工程--》設(shè)置--》連接)

圖4:Visual Studio 2005(project-->* property pages)

 

4. 書(shū)籍推薦
<< POSIX Multithread Programming Primer >>: http://download.csdn.net/source/237125

posted on 2009-03-17 23:58 pear_li 閱讀(1072) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++Linux/Unix

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美一区二区在线观看| 久久久久国产精品麻豆ai换脸| 一区二区免费在线播放| 国产精品美女久久久浪潮软件| 另类专区欧美制服同性| 亚洲免费在线看| 在线亚洲电影| 日韩一级大片| 亚洲日本va午夜在线影院| 伊人色综合久久天天| 欧美久久视频| 男人的天堂亚洲在线| 久久亚洲捆绑美女| 久久综合999| 久久这里有精品视频| 欧美一区二区私人影院日本| 六月天综合网| 欧美成人精品在线观看| 久久久亚洲高清| 久久久亚洲人| 欧美v日韩v国产v| 欧美国产日本韩| 久久婷婷综合激情| 欧美~级网站不卡| 欧美日韩免费观看一区二区三区| 欧美成人a∨高清免费观看| 久久这里有精品15一区二区三区| 老色鬼精品视频在线观看播放| 蜜臀99久久精品久久久久久软件| 国产午夜精品理论片a级探花| 国产欧美视频一区二区三区| 国产欧美日韩91| 激情丁香综合| 日韩视频一区| 国产亚洲欧美另类中文| 在线观看91精品国产麻豆| 亚洲黄色免费| 在线国产亚洲欧美| 一区二区三区视频免费在线观看 | 亚洲国产欧美日韩另类综合| 欧美电影免费观看高清完整版| 亚洲国产精品一区制服丝袜 | 翔田千里一区二区| 噜噜噜噜噜久久久久久91| 久久av最新网址| 欧美激情影音先锋| 国产自产精品| 99热这里只有精品8| 欧美亚洲一区二区在线观看| 欧美一区二区三区播放老司机 | 国产一区二区三区av电影| 亚洲国产欧美一区| 午夜精品久久99蜜桃的功能介绍| 久久久亚洲人| 99天天综合性| 亚洲国产精品久久久| 亚洲在线观看视频网站| 久久综合一区二区| 欧美1区免费| 亚洲图片欧美日产| 国产精品美女久久久浪潮软件 | 国产精品欧美经典| 亚洲国产另类久久久精品极度| 一区二区高清视频| 欧美国产精品v| 亚洲日本欧美日韩高观看| 欧美一级播放| 国产精品国产三级国产aⅴ9色| 亚洲黄色免费| 欧美国产高清| 久久久免费精品| 亚洲在线播放| 欧美亚洲第一区| 99国产精品视频免费观看| 欧美激情女人20p| 久久综合久久综合九色| 欧美日韩精品免费| 亚洲日韩中文字幕在线播放| 久久综合999| 久久精品人人做人人综合| 国产午夜一区二区三区| 欧美一区二区播放| 国产日产亚洲精品系列| 欧美一区二区日韩| 午夜精品久久久久| 国产日韩欧美日韩| 久久激情中文| 久久精品视频va| 国内精品久久久久影院 日本资源| 午夜精品www| 亚洲国产一区二区三区高清| 美女精品一区| 日韩亚洲国产欧美| 亚洲日本一区二区| 欧美性色视频在线| 亚洲国产另类久久久精品极度| 免费中文日韩| 欧美a级理论片| 一区二区三区视频观看| 99亚洲视频| 国产欧美一区二区三区久久人妖| 美国成人直播| 国产精品久久福利| 欧美黑人国产人伦爽爽爽| 国产精品日韩电影| 亚洲国产精品高清久久久| 国产欧美在线| 99在线视频精品| 亚洲第一精品久久忘忧草社区| 一本一本久久a久久精品综合妖精| 狠狠色综合色区| 亚洲一区二区三区免费在线观看| 亚洲国产一区二区三区高清 | 亚洲午夜视频| 亚洲精品乱码| 久久这里只有| 久久久久国产成人精品亚洲午夜| 欧美剧在线观看| 欧美激情一区二区三区高清视频 | 亚洲欧洲一区二区天堂久久| 狠狠干狠狠久久| 久久亚洲一区| 夜夜爽www精品| 美国十次成人| 国产乱子伦一区二区三区国色天香| 欧美激情一区二区三级高清视频| 国产精品自拍三区| 一本久久青青| 日韩亚洲成人av在线| 亚洲欧美日韩国产成人精品影院| 免费在线成人av| 欧美h视频在线| 在线观看福利一区| 久久久久国产一区二区三区四区 | 亚洲精品久久7777| 久久久综合香蕉尹人综合网| 欧美一区二区在线视频| 欧美午夜在线观看| 亚洲视频在线免费观看| 亚洲欧美国产va在线影院| 国产精品jvid在线观看蜜臀| 亚洲精品男同| 中文日韩欧美| 国产精品人人爽人人做我的可爱| 亚洲手机视频| 久久久久九九九九| 精品成人国产| 欧美成人免费网站| 亚洲日本va午夜在线电影| 一区二区三区黄色| 国产精品久久久久久久一区探花| 亚洲视频电影图片偷拍一区| 先锋a资源在线看亚洲| 国产日产亚洲精品| 久久五月天婷婷| 91久久精品www人人做人人爽| 久久一区精品| 亚洲国产欧洲综合997久久| 一区二区三区四区精品| 午夜在线播放视频欧美| 91久久精品日日躁夜夜躁欧美| 亚洲在线视频| 国产日本欧美一区二区三区| 香蕉久久夜色精品| 久久在线免费| 最新69国产成人精品视频免费| 欧美成人有码| 亚洲一区在线看| 美日韩丰满少妇在线观看| 亚洲激情在线播放| 欧美色中文字幕| 欧美在线视频导航| 亚洲日本激情| 国产日韩亚洲欧美| 免费不卡视频| 亚洲电影第1页| 国产一区视频在线看| 久久久精品2019中文字幕神马| 亚洲第一福利在线观看| 亚洲欧美日本另类| 伊人蜜桃色噜噜激情综合| 美女主播视频一区| 一本久道综合久久精品| 国产日韩精品入口| 欧美黄色一区| 久久久久免费观看| 在线亚洲美日韩| 亚洲国产精彩中文乱码av在线播放| 亚洲视频欧洲视频| 91久久久久久| 好吊成人免视频| 国产精品美女www爽爽爽| 欧美77777| 久久久国产一区二区三区| 亚洲免费视频观看| 99国产成+人+综合+亚洲欧美| 欧美v亚洲v综合ⅴ国产v| 久久大逼视频| 久久亚洲综合色| 国产日韩欧美一区|