2012-08-06 3 views
-1

다른 곳에서 사용하는 dll 파일을 가지고 있지만 dll 파일에서 매우 빈번하게 함수 내부에서 업데이트해야하는 클래스가 있습니다. 그런 다음 매번 통과 할 때마다 함수를 실행하는 루프를 작성하려고했습니다. 그러나 그렇더라도 DLL을 사용하는 스레드는 루프에 걸리기 때문에 일시 중지됩니다 (끝날 때까지 기다림). 따라서 프로그램이 정지됩니다.실행을 일시 중지하지 않는 C++ 루프

그래서 어떻게 스레드를 고정하지 않고이 루프를 만들 수 있습니까?

추신. 내가 가지고 있지만 Timer (.net), 사용하려고했지만 정말 관리되는 코드를 제외 할 싶어요.

+0

DLL에 타이머를 만드시겠습니까? –

+5

다른 스레드를 실행하여 그 함수를 호출 할 수는 없습니까? – learnvst

+0

아니, dll을 원한다. (이유는 있지만, 지금은 논의하고 싶지 않다.) 나는 타이머를 만들려고했다.하지만 이벤트 핸들러를 정의 할 때, 관리되는 코드와 관리되지 않는 코드를 혼합해야한다. 완벽하게,하지만 디버깅 할 때, 충돌합니다. –

답변

0

코드 샘플이 없으면 정확한 답변을 제공하기가 쉽지 않지만 기본적으로 새 스레드가 필요합니다. 새 스레드를 만드는 방법은 사용중인 API에 따라 달라집니다. .NET을 사용할 수 있습니다. Lirik이 제안한대로 WINAPI가 무엇이든 부스트를 사용할 수 있습니다. C++의 스레드는 플랫폼에 따라 다릅니다 (Simple example of threading in C++ 참조). 따라서 OS와 컴파일러에 대한 자세한 내용이 없으면 실제 코드 예제가 실제로 가능하지 않습니다. "execution pause"는 아마도 무한 루프 일 것이기 때문에, C++의 스레딩에 대한 자료를 먼저 읽는 것이 좋습니다.

기능이 클래스에 이미 캡슐화되어 있으면 좋겠다. 호출 스레드가 아무 것도 알지 못해도 클래스 자체에 스레드를 올바르게 시작하고 종료 할 책임이 있기 때문에 유용하다.

관련 문제