좋아요, 그렇기 때문에이 작업을 수행하기가 정말 쉽다는 느낌이 들었습니다. 실제로 이와 같은 작업은 다른 언어에서도 쉽게 수행 할 수 있습니다. 오직 나의 C++이 나의 가장 강한 언어가 아니기 때문에, 나는 이것이 어떻게 이루어져야 하는지를 아주 잘 이해할 수 없다.비동기 코드 섹션을 C++ 함수에 삽입
일부 시작 작업을 수행하는 기능이 있으며 일부 방법을 통해 일부 I/O를 수행하고 다른 프로세스에서 데이터를 가져와야합니다. 단지, 여기 파트 1 일 2 행동 사이의 논리적 분리가 없기 때문에
startupPt1() {
/* stuff */
ioCall(startupPt2());
}
startupPt2() {
/* rest of stuff */
}
정말 내가이 문제를 방지하려면 : 당연히 나는 콜백이 작업을 수행 할 수 있지만, 나는이 일을 피하려고 우리가 그들 사이에 비동기 적으로 발생시키고 자하는 I/O가 있다는 것을 의미합니다.
저는 현재 콜백을 위와 같이 사용하고 있지만 그 외에는 무엇을해야할지 모르겠습니다. 이 OS는 당신을 위해 IO 작업을 예약 할 수 있습니다
#include<future>
//...
void startup() {
// part 1
auto result = std::async([](){
// IO part
});
// part 2 not relying on the result of IO
// part 2 that uses IO result as result.get()
}
: OK
이미 시도 했습니까? _ "어떤 아이디어?"를 묻는 것은 너무 광범위하게 들리므로 여기에서 질문하십시오. 이것은 우리가 여기서 원하지 않는 끝없는 토론으로 바뀔 수 있습니다. 이 사이트는 오히려 질의 응답 쌍과 같은 간결한 FAQ에 관한 것입니다. 또한 [여기] (http://stackoverflow.com/help/asking)을 읽으십시오. –
[std :: async] (http://en.cppreference.com/w/cpp/thread/async)는 어떻습니까? – Gasper
* "당연히 콜백으로이 작업을 수행 할 수 있습니다"* C++에서 콜백을 사용할 수 있습니다. 'std :: function'을 보자. –