일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 포토샵
- Photoshop
- 확률
- 수학
- 통신사할인
- JSX
- stl
- grid
- skt membership
- pandas
- Codility
- Gap
- 알고리즘
- box-sizing
- 상태
- 소수
- 미디어 쿼리
- CSS
- 반응형 웹
- 백준
- react
- float
- transform
- REM
- spring
- Javascript
- 강화학습
- SK바이오사이언스
- c++
- c
Archives
- Today
- Total
sliver__
[Mastering C++ Programming] - Concurrency tasks 본문
728x90
- 동시성 지원 모듈은 작업이라는 개념을 지원합니다.
- 작업은 여러 스레드에서 동시에 발생하는 작업입니다.
- packaged_task 클래스를 사용하여 동시 작업을 만들 수 있습니다.
- packaged_task 클래스는 스레드 함수, 해당 약속 및 기능 개체를 편리하게 연결합니다.
- 간단한 예제를 통해 packaged_task의 사용법을 이해해 봅시다.
- 다음 프로그램은 람다 식과 함수를 사용하여 약간의 함수형 프로그래밍을 맛볼 수 있는 기회를 제공합니다.
#include <iostream>
#include <future>
#include <promise>
#include <thread>
#include <functional>
using namespace std;
int main ( ) {
packaged_task<int (int, int)>
addTask ( [] ( int firstInput, int secondInput ) {
return firstInput + secondInput;
} );
future<int> output = addTask.get_future( );
addTask ( 15, 10 );
cout << "The sum of 15 + 10 is " << output.get() << endl;
return 0;
}
- 이전에 표시된 프로그램에서 addTask라는 packaged_task 인스턴스를 만들었습니다.
- packaged_task< int (int,int)> 인스턴스는 추가 작업이 정수를 반환하고 두 개의 정수 인수를 사용함을 의미합니다.
addTask ( [] ( int firstInput, int secondInput ) {
return firstInput + secondInput;
});
- 정의된 람다 함수입니다.
- 흥미로운 부분은 main.cpp의 addTask( ) 호출이 일반 함수 호출처럼 보인다는 것입니다.
- future<int> 객체는 packaged_task 인스턴스 addTask에서 추출되며, 이후 get() 메서드인 future 객체 인스턴스를 통해 addTask의 출력을 검색하는 데 사용됩니다.
728x90
'CS > C++' 카테고리의 다른 글
[Mastering C++ Programming] - Google test framework (0) | 2022.12.11 |
---|---|
[Mastering C++ Programming] - TDD (Test-driven development) (0) | 2022.12.11 |
[Mastering C++ Programming] - Asynchronous message passing (0) | 2022.12.09 |
[Mastering C++ Programming] - Concurrency (0) | 2022.12.09 |
[Mastering C++ Programming] - Semaphore (0) | 2022.12.09 |
Comments