저는 일부 노동자가 가서 공유 된 문제에 대한 작업을 수행하는 기본적인 생산자/소비자 어플리케이션을 가지고 있습니다. 동시 또는 비슷한 것을 사용하는 것은 사소하지 않습니다. 그것은 매우 쉽게 다음과 같은 일을 할 수 있기 때문에 나는 스레딩을위한 Qt는을 사용하여 익숙해했습니다std :: threads를 사용하여 개체를 스레드로 이동 하시겠습니까?
for(int i = 0; i < nworkers; i++){
Worker* myworker = new Worker();
QThread* thread = new QThread;
myworker->attachToThread(thread);
myworker->doSomething(someArgument);
myworker->doSomethingElse(someOtherArgument);
myworker->run();
}
내가 시도하고 학습 운동을 위해 부분적으로 std::thread
사용으로 전환하고 싶은 부분이 그래서 Qt에서 링크 할 필요가 없습니다. 그래서 내 질문에, 거기에 스레드에서 개체를 회전하고 다음 함수를 호출하는 간단한 방법은 무엇입니까? 위의 모델은이 경우 매우 잘 작동합니다. 솔직히 말해서 나는 std::async
을 사용하여 모든 것을 작업자 함수에 인수로 전달할 수 있지만 대신 위의 코드를 표준 라이브러리의 관점에서 작성하는 방법이 있다면 궁금합니다.
은 내가
void foo(someArguments){
Worker* myworker = new Worker();
myworker->doSomething(someArguments);
myworker->run();
}
같은 것을 할 그 스레드 수있는 것 같아요,하지만 모든 것이 foo
내부에 캡슐화된다. Qt를 사용하면 어디에서나 스레드 된 객체에 액세스 할 수 있습니다.
표준 라이브러리가있는 다른 스레드에서 함수를 실행하는 기본 사항은 이해하지만, 원하는 것은 큰 프레임 워크의 도움으로 만 가능할 수 있는지 궁금합니다.