linux 에서 ZThread 사용 하기

자바 언어 는 병행 체 제 를 핵심 언어 에 포함 시 킵 니 다. 자바 언어 는 플랫폼 과 무관 하기 때 문 입 니 다.C 는 병발 메커니즘 이 없고 C + + 표준 에 도 병발 메커니즘 이 포함 되 지 않 았 다.우 리 는 windows 플랫폼 에서 c + + 를 개발 하고 병발 체 제 를 사용 할 때 자주 사용 하 는 SDK win 32 api 를 개발 합 니 다.라 는 책 에서 작 가 는 개 원 된 크로스 플랫폼 의 고급 대상 을 대상 으로 하 는 선형 과 sycnchronization 라 이브 러 리 인 ZThread 를 제공 했다.
ZThread 라 이브 러 리 의 홈 페이지:http://zthread.sourceforge.net
위의 사이트 가 열 리 지 않 는 다.아래 주소 로 다운로드 할 수 있 습 니 다.
소스 코드 Zthread 다운로드 주소:http://prdownloads.sourceforge.net/zthread/ZThread-2.3.2.tar.gz
1. Liux 에서 컴 파일 합 니 다.
        1. 저장 파일 을 / usr / local / src 에 다운로드
         2. 스트레스 해소
             cd /usr/local/src
             tar -zxvf ZThread-2.3.2.tar.gz
        3. 컴 파일 설치
             cd ZThread-2.3.2
             ./configure --prefix=/usr/local/ZThread
            ... / configure 에서 오류 가 발생 하면:
            error: C++ compiler cannot create executables 
            yum install gcc-c++
          그리고 계속:
           make
            make 에서 오류 가 발생 했 습 니 다:
            ../include/zthread/Guard.h: In destructor 'ZThread::Guard::~Guard()':
            ../include/zthread/Guard.h:494: error: there are no arguments to 'isDisabled' that depend on a template parameter, so a declaration of 'isDisabled' must be available
           단지 먼저 export CXXFLAGS = - permissive 를 한 다음 에 실행 합 니 다.
          ./configure --prefix=/usr/local/ZThread
          make
          make install
2. Liux 에서 사용        1. 파일 쓰기     zthread0.h    
#ifndef LIFT_OFF_H
#define LIFT_OFF_H
#include <iostream>
#include "zthread/Runnable.h"
using namespace std;

class LiftOff : public ZThread :: Runnable{
  int countdown;
  int id;
public:
      LiftOff(int count,int ident=0):countdown(count),id(ident){}
      ~LiftOff(){
         cout << id << "completed " << endl;
      }
      void run(){
         while(countdown--){
             cout << id << ":" << countdown << endl; 
         }
         cout << id << " lift off " << endl;
      }
};
#endif

BasicThreads.cpp
#include "zthread0.h"
#include "zthread/Thread.h"
using namespace std;
using namespace ZThread;

int main(){
 try{
    Thread t(new LiftOff(10),true);
    cout << "Waiting for LiftOff " << endl;
   }catch(Synchronization_Exception& e){
     cerr << e.what() << endl;
   }
} ///:~
      2. 링크 를 컴 파일 하여 ZThread 라 이브 러 리 에 추가
        
 gcc BasicThreads.cpp -L /usr/local/ZThread/lib -I /usr/local/ZThread/include  -lstdc++ -lZThread

       주의 - L 뒤에 ZThread 를 연결 하 는 설치 경로 / lib
      - lstdc + + 를 추가 하려 면 다음 과 같은 오류 가 발생 할 수 있 습 니 다.  
    (.text+0x3a29): undefined reference to `std::basic_ostream
       - lZThread 를 추가 하려 면 추가 의존 항목 인 ZThread. lib 를 추가 하 는 것 과 같 습 니 다. 그렇지 않 으 면 다음 과 같은 오류 가 발생 할 수 있 습 니 다.
     (.text+0xd1):XX.cpp: undefined reference to `ZThread::Thread::Thread(ZThread::Task const&, bool)'
     3. 운행
      ./a.out
      오류 가 발생 할 수 있 습 니 다: error while loading shared libraries: libZThread - 2.3. so. 2: cannot open shared object file: No such file or directory
       libZThread - 2.3. so. 2 를 / usr / lib 로 복사 합 니 다.
      예 를 들 어 cp / usr / local / ZThread / lib / libZThread - 2.3. so. 2 / usr / lib
      그리고 OK 를 실행 합 니 다. 출력 은 다음 과 같 습 니 다.
Waiting for LiftOff 0:9 0:8 0:7 0:6 0:5 0:4 0:3 0:2 0:1 0:0 0 lift off 0completed     

좋은 웹페이지 즐겨찾기