2011-11-28 2 views
0

OpenCV로 코딩을하고 있는데 일부 이미지 픽셀을 처리 중입니다. 그러나 시퀀스베이스에서 각 색상 R G B를 처리하기 때문에 프로세스가 너무 많은 시간이 걸립니다 (그림이 매우 지연됩니다). 나는 멀티 스레딩을함으로써 더 빠르게 만들 수 있다고 생각했으며, 이전 지식에 기초하여 Threadpool은보다 효과적이었다. 내가 줄을 몇 가지 예를 보았지만 QRunnable을 사용해야하고 구현은 매번 다른 채널로 동일한 함수를 전달하기 때문에 그보다 더 쉽습니다.Qthreadpool in Qt

어떤 생각이든 !!!

+0

QRunnable에 대해 복잡한 것은 없습니다. 당신은 아마도 하나의 구현 만 필요로 할 것입니다. 그것은 매개 변수를 취하여 처리 할 채널을 지정합니다. – Mat

답변

1

별도의 스레드에서 함수를 실행하려면 QtConcurrentRun 메커니즘을 사용할 수 있습니다.

A a; 
QFuture<void> future1 = QtConcurrent::run(a, &A::f, 1); // Call it with argument 1 
QFuture<void> future2 = QtConcurrent::run(a, &A::f, 2); // Call it with argument 2 
:

당신은 당신이 할 수있는 다른 클래스에서 비동기 함수를 호출 할 경우 지금 클래스 A

class A { 
public: 
    f(int i); 
} 

에 인수로 정수와 기능 f가 있다고 가정

QFutureWatcher을 사용하면 실행이 완료되었을 때 알림을받을 수 있습니다.

+0

나는 그것을 시험해 보았다. 그리고 그것은 간단한 곱셈 방법과 함께 일했다. 그러나 그것은 나의 기능과 함께 작동하지 않았다. 나는 그 이유를 모른다! – user573014