나는 거기에 아직 존재하지 않는다면 끊임없이 데이터를 목록으로 푸시하는 소비자 생산자 상황이있다. 데이터를 서버에 보냅니다.std :: unique_ptr을 std :: list 변수로 사용하는 방법
현재 스레드가 몇 초 동안 지연되고 깨어나서 플래그를 설정하여 목록에 아무 것도 추가되지 않고 패키징을 수행하고 목록에서 처리 된 항목을 삭제 한 다음 목록에 다시 추가 시작하십시오.
이것은 프로토 타입에서는 문제가되지 않았지만 이제는보다 현실적인 상황에서 더 잘 작동 할 필요가 있습니다.
그래서 제작자에게 정보를 얻고 싶습니다. 크기가 충분히 크거나 충분한 시간이 지나면 목록을 처리 할 스레드로 전달합니다.
목록에 대한 참조를 전달하려면 unique_ptr이 유용하므로 수동으로 생성자 스레드가 새로운 목록을 만들고 모든 실제 목적으로 이전과 같은 목록을 사용할 수 있습니다. 내가
std::unique_ptr<STRINGQUEUE> newMachineQueue;
에
typedef list<string> STRINGQUEUE;
STRINGQUEUE newMachineQueue;
에서 내 목록을 변경하려고 할 때
는하지만 그 때 나는 insert
이 std::unique_ptr
의 구성원이 아닌 오류가 있음을 얻는다.
newMachineQueue.get()
을 사용하고 싶지 않고 다음으로 내 작업을 수행하고 싶습니다. unique_ptr
의 이점을 잃어 버렸다고 생각합니다.
목록에 unique_ptr을 사용하고 목록의 메소드를 호출하려면 어떻게해야합니까?
죄송합니다. newMachineQueue.insert를 사용했는데 현재 포인터가 아닙니다. –
@JamesBlack 또한 'unique_ptr'없이 원하는 것을 수행하는 코드를 추가했습니다. – pmr
당신의 편집은 unique_ptr로 스레드를 호출 할 때 이상한 오류가있어 다른 질문을 할 준비가되었습니다. 고맙습니다 –