일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- stl
- Design Pattern
- margin
- c
- Javascript
- align-items
- 강화학습
- CSS
- grid
- 통신사할인
- c++
- pandas
- Prefix Sums
- 포토샵
- 소수
- Gap
- 상태
- spring
- 알고리즘
- dataframe
- series
- SK바이오사이언스
- 확률
- 백준
- 에라토스테네스의 체
- Codility
- 수학
- skt membership
- Flexbox
- Photoshop
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