동기화 동시 운영 - 연구는 "C ++ 동시 프로그래밍 전투"(4) 노트

이벤트에 대한 대기 :
    조건 변수를 대기 위해 :
        표준 : condition_variable / 표준 : condition_variable_any,前者配合표준 : : 뮤텍스以及의 표준 : unique_lock, 표준 : lock_guard,
    후자는 (뮤텍스 포함) 작업 뮤텍스의 유사한 유형과 함께 사용할 수 있지만,이 표준 : 잠금 보호의 객체의 멤버 뮤텍스, 성능 및 크기에 특정 가격 내에서 개최됩니다 때문이다.
    notify_all 모든 대기에 통보, 대기중인 스레드가 대기가 계속 실행 통지 notify_one, 조건 변수 조건을 계속하기 위해 충족 잠깐 사용
    스레드 실행을 계속할 수 있습니다.
    
    기다리는 미래 :
        일회용 이벤트는, 미래가 대기 상태에 준비가 될 때, 즉, 그 상태를 재설정 할 수 없습니다.
    이전 이벤트의 예를 가리키는 두 개의 미래, 유일한 미래 (표준 : : 미래), 또 다른 공유 미래 (표준 : shared_future)의 종류를 제공,보다 후자의 공유
    실시 예는 동일한 이벤트와 연관 ​​될 수있다. 이벤트가 준비 후자의 경우, 모든 인스턴스가 준비된다.
    
    비동기 결과를 다시 얻을 :
        표준 : 비동기 비동기 작업을 시작, 그것은 함수의 반환 값을 보유 할 표준 : 미래의 객체를 반환이 시간 전화
    객체의 인터페이스를 얻을 수 (스레드는 미래의 대상이 될 때까지 차단하고 값을 반환 준비됩니다). 표준 : 미래의 템플릿 매개 변수는 반환 값을 얻을 수있는 유형입니다.
    오버로드 된 버전이 표준을 :: 지정된 부팅 모드를 지원하는 비동기 표준 : : : : deferreds은 시작 통화 대기가 / 때까지 이전이 지연되고, / 실행의 표준 : : : : 비동기 후자 즉시 개방,받을 실행
    이 결합되면 새로운 스레드가 선택할 수있는 특정 구현 플랫폼에 따라, 실행합니다.
    :: 표준 packaged_task 표준 : 비동기는 또한, 비동기 작업을 시작할 수 있습니다 <> 표준 : 약속은 <> 도 달성 할 수 작업을 병렬로 실행하기 시작합니다.
    표준 : 높은 수준에서 비동기 비동기 작업, 우리는 내부 스레드 작성의 세부 사항에 초점을하지 않도록, 쉽게 비동기 실행 상태 및 결과에 액세스 할 수 있습니다.
    
        :: packaged_task 표준 <> 객체에 함수 나 호출에 미래를 결합, 함수 서명 템플릿 매개 변수. 표준 : packaged_task 연산자 과부하 ();
    표준 : 미래의 객체가 다음 작업을 수행 다른 장소에서 get_future 객체의 인터페이스를 호출하는 호출 할 수 있습니다, 당신은 관련 얻을 수 있습니다 : 약속이 상대적으로 표준 > < 저장 전
    호출 가능한 함수 또는 공유 상태 값 오브젝트 (비동기 동작을 달성하기 위해)이되고, 미래 get_future 객체를 연관시킴으로써 얻어지는 공통이 최종을 수득
    호출 함수 또는 객체의 값 또는 값 세트를 리턴한다.
        
        :: 약속 STD <> 비동기 서비스 제공, 표준 : : 미래의 객체가 설정 값을 읽어 연관되어 가치있는 방법을 설정하여. SET_VALUE 인터페이스의 약속
    또는 이상 set_exception의 표준 : : 미래를 준비하게되도록 설정 할 수있다. 미래의 인터페이스에 동일한 표준 : 약속은 연관된 객체를 얻을 수 get_future.
    표준 : : 미래 가치 또는 예외가 유지 될 수있다. 다른 장소에서 약속을 제공하는 이러한 값은, 미래의 목표 설정 값으로 다른 곳을 얻었다.
    
    공유 표준 : shared_future :
        표준 : shared_future이 참조 이벤트와 관련된 국가의 여러 인스턴스가있을 수 있습니다, 그것은 잘못된 반환 이동 한 후 유효한 표준 : 미래 가진 이동성, 즉, 복사 할 수 있습니다.
    할당 된 객체의 향후 움직임은 수 std뿐만 아니라, 발효 :: shared_future 호출 GET는 공유 상태 여러 번 획득. 표준 : 미래는 수 std 변환 할 수 있습니다 : shared_future 객체가
    전송 표준 후 : 미래는 무효가됩니다.
    
기반 대기 시간 제한 :
    크로노 : 시간 관련 클래스 템플릿이나 도구의 개념을 제공 시간 도서관. 그들은 : 지속 시간, 시점의 time_point, 시계 시계;
    시계 시계 : system_clock (시스템 클럭 (균일하지 가변)) steady_clock (안정화 / 평균 속도 클록 불변) high_resolution_clock (고정밀 시계
    그것은 평균 속도 시계 또는 시스템 클럭) 될 수있다.
    개시 시간 : DURATION은 <T 타입, 비 STD :: <N, M은 >> , 축적 시간 T는 초 단위로 표현되고, 파라미터 배급 각주기의 분수로 표현 된 템플릿 파라미터 유형, 상기 식에서
    N의 값 / M은 <같은 시간주기 초 나타낸다 (3600) , 1 > 나타내며 3600 초, 즉 1 시간 기간 < 1 , 1000 > 나타내고 0.001 초, 즉 1 개 단말 기간, 표준 라이브러리 제공
    표준 : 크로노 :: 밀리 초, 표준 : 크로노 :: 시간 등을 같은 시간의 일부 일반적으로 사용되는 사전 정의 된 기간.
    크로노 도구 전달 함수 :: :: STD duration_cast은 <> 기간 사이에 상당한 전환을 달성 할 수있다.
    시간 time_point : 표준 : 크로노 :: time_point.
    
    C ++ 동의를 시간 제한 관련 기능은 다음과 같습니다 :
        표준 : this_thread :: sleep_for, 표준 : this_thread :: sleep_until;
        표준 : condition_variable :: wait_for, 표준 : condition_variable :: wait_until;
        표준 : condition_variable_any :: wait_for, 표준 : condition_variable_any :: wait_until;
        표준 : timed_mutex :: try_lock_for, 표준 : timed_mutex :: try_lock_until;
        표준 : unique_lock :: unique_lock, 표준 : unique_lock :: try_lock_for, 표준 : unique_lock :: try_lock_until;
        표준 : 미래 :: wait_for, 표준 : : 미래 :: wait_until;
        표준 : shared_future :: wait_for, 표준 : shared_future :: wait_until;

변수 데이터를 공유 할 수있는 방법을 피하십시오 :
    함수형 프로그래밍 (FP), 통신 시퀀스 처리 (CSP는 사용 / MPI를 메시지 전달 인터페이스);
        
동기 코드의 일부 조작은 간단하다 :
    미래와 기능 프로그래밍 : 표준 : : 미래, 표준 : 비동기 및 표준 : : 스레드 또는 동시 작업을 packaged_task을 달성 할 수 있다는 것을 의미합니다.
    동기 메시지 작동 : 스레드간에 공유 데이터는, 스레드 간의 통신은 메시지 큐를 공유함으로써 달성되지 않는 다른 작업을 달성하기 위해 멀티 스레드를 사용하여 분할을 수행
    초점을 분할 시스템 설계 및 동시 작업의 구현을 단순화하기 위해 멀티 스레딩.

 

추천

출처www.cnblogs.com/haomiao/p/11647397.html