• <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>

            newplan

            阿基米德在洗澡時發現浮力原理,高興得來不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            五個哲學家線程實現

            Posted on 2008-01-04 00:14 山泉彎延 閱讀(345) 評論(0)  編輯 收藏 引用 所屬分類: UNIX Programming
            #include "apue.h"
            #include 
            "semaphore.h"
            #include 
            "pthread.h"

            #define N 
            5
            static 
            int necs;
            static sem_t  
            *forks;

            void 
            *
            takeFork(
            int i)
            {
            if(i==N-1)
                {
                 sem_wait(
            &forks[0]);
                 sem_wait(
            &forks[i]);
                }
               
            else
                 {
                 sem_wait(
            &forks[i]);
                 sem_wait(
            &forks[i+1]);
                 }
            }
            void 
            *
            putFork(
            int i)
            {
            if(i==N-1)
                {
                 sem_post(
            &forks[0]);
                 sem_post(
            &forks[i]);
                }
            else
                {
                sem_post(
            &forks[i]);
                sem_post(
            &forks[i+1]);
               }
            }
            void 
            thinking(
            int i,int necs)
            {
                printf(
            "pholosopher %d  is thinking\n",i);
                sleep(necs);

            }
            void
            eating(
            int i,int necs)
            {
                printf(
            "pholosopher %d  is eating\n",i);
                sleep(necs);
            }
            void 
            *
            philosopher(void 
            *n)
            {
                
            int i=(int )n;
                
            while(1)
                {
                 thinking(i,necs);
                 takeFork(i);
                 eating(i,necs);
                 putFork(i);
                }
            }
            //============================main function
            int
            main(
            int argc,char *argv[])
            {
               pthread_t tid;
              
               
            if(argc==1)
                      necs
            =2;
               
            else if(argc ==2)
                      necs
            =atoi(argv[1]);
               
            else return 1;
              
               forks
            =(sem_t*)malloc(N*sizeof(sem_t));
               
               
            int i;
               
            for(i=0;  i<N;  i++)
               sem_init(forks
            +i,0,1);

               
            int status;
               
            for(i=0;i<N;i++)
                {
                  status
            =pthread_create(&tid,NULL,philosopher,(void*)i);

                  
            if(status<0)
                  err_sys(
            "create error!");  
                } 
                pthread_join(tid ,
            NULL);
                return 
            0;  
            }

            久久无码AV一区二区三区| 国产精品久久波多野结衣| 亚洲午夜久久久精品影院| 日日噜噜夜夜狠狠久久丁香五月| 一级做a爰片久久毛片看看| 品成人欧美大片久久国产欧美| 国产精品九九久久免费视频| www亚洲欲色成人久久精品| 日韩欧美亚洲综合久久影院d3| 久久精品国产精品青草| 老司机国内精品久久久久| 国产亚洲婷婷香蕉久久精品| 久久精品国产亚洲AV无码麻豆| 99久久精品国产麻豆| 日本精品久久久久中文字幕8| 97精品国产97久久久久久免费| 久久精品无码免费不卡| 天天影视色香欲综合久久| 久久久噜噜噜久久中文字幕色伊伊| 亚洲色婷婷综合久久| 久久99精品国产一区二区三区| 狠狠精品久久久无码中文字幕 | 亚洲AV无码久久精品成人| 久久精品卫校国产小美女| 国内精品人妻无码久久久影院| 国产精品久久影院| 久久亚洲中文字幕精品一区四| 久久天天躁狠狠躁夜夜躁2014| 99国产欧美精品久久久蜜芽| 精品国产91久久久久久久a| 久久99久久99精品免视看动漫 | 人妻精品久久久久中文字幕一冢本| 996久久国产精品线观看| 久久艹国产| 99久久国产宗和精品1上映| 久久综合综合久久狠狠狠97色88| 亚洲国产精品综合久久网络 | 久久精品国产亚洲麻豆| 久久人人爽人人爽人人片AV东京热| 久久久久无码精品国产| 青青草原综合久久大伊人导航 |