2017-12-17 8 views
-2

저는 Windows 10에서 codeblocks 및 gcc 7.2를 사용하며 C++ 11 또는 C++ 14를 사용할 수 있습니다. 가능하다면 외부 라이브러리없이 (부스트). 수억 개의 필드를 처리하는 프로그램이 있습니다. 개념상의 증거이므로 멋진 오류 처리가 필요하지 않습니다. 나는 단순성과 성능이 필요하다. 필드는 500MB 이상에 도달 할 수있는 비트 버퍼에 매핑되며 버퍼 관리를 격리 된 스레드에 넣고 싶습니다. 생성자 또는 초기화는 벡터 생성을 수행하고 소멸자 또는 끝 함수는 통계를 사용하여 버퍼에 디스크를 기록하고 수백만 번 호출되는 함수는 일부 계산을 수행하고 비트를 설정합니다. 그 함수를 주 프로그램에서 비동기라고 부를 필요가 있으며 어떤 데이터도 반환 할 필요가 없습니다. 비트를 설정하고 오류가 있다면 읽을 수 있습니다. 그렇지 않으면 처리가 복잡해지면 처리가 끝나는 것보다 읽을 수 있습니다. 주 프로그램은 동일한 기능에 액세스하는 2 또는 4 개의 스레드로 복제 될 수 있습니다. 그 기능의 비동기 호출에 대한 지침을 주셔서 감사합니다. 고맙습니다.비동기 스레드

+0

글쎄 C++ 11 이상은 [std :: thread] (http://en.cppreference.com/w/cpp/thread/thread)를 지원합니다. –

+0

나는 그것을 사용했는데 괜찮습니다. 어떻게해야 비동기를 호출 할 수 있습니까? tat는 주 프로그램을 차단하고 싶지 않고 메인에 응답 할 필요가 없으므로 미래가 없으면 원하는 스레드를 사용합니다. –

+0

이 답변을 참조 할 수 있습니다. https://stackoverflow.com/questions/10890242/get-the-status-of-a-stdfuture – Frank

답변

-1

영어로 죄송합니다. 질문은 메인 프로그램을 차단하지 않고 스레드에 의해 수행 할 작업이 없을 때 CPU를 소비하지 않고 수백만 번 스레드와 통신하는 것에 관한 것입니다. 그리고 프로그램 코드가 매우 짧기 때문에 성능이 좋지만 시간이 많이 걸립니다.