내 프로그램에 세 개의 스레드가 있으며 동기화 및 스레드 안전성을 배우려고합니다. 아래에서는 다른 스레드가 수행하는 작업에 대해 간략하게 설명합니다. 대신 이벤트를 사용하여 무한대로 읽는 대신 다른 스레드에서 각 프로세스를 트리거하는 방법을 배우고 싶습니다.이 스레드는 동시성 문제를 발생시킵니다.다중 스레드 및 이벤트 사용
인터넷 검색은 많은 옵션을 던지지 만,이 경우 구현하는 것이 가장 좋은지 잘 모르겠습니다. 가장 좋은 방법을 배우는 표준 방법/이벤트에 대한 방향을 제시 할 수 있습니까?
저는 VS 2012에서 이것을하고 있으며, 이상적으로는 외부 라이브러리를 사용하지 않을 것입니다. 후원.
스레드 1 : 메시지를 받고 글로벌 큐인 queue<my_class> msg_in
으로 푸시합니다.
스레드 2 : 무한 루프 (예 : while(1)
); if (!msg_in.empty())
까지 기다린 후 일부 처리를 수행하고이를 글로벌 map<map<queue<my_class>>> msg_out
으로 푸시합니다.
while (1)
{
if (!msg_in.empty())
{
//processes
msg_map[i][j].push(); //i and j are int (irrelevant here)
}
}
스레드 3 :
while (1)
{
if (msg_map.find(i) != msg_map.end())
{
if (!msg_map[i].find(j)->second.empty())
{
//processes
}
}
}