다른 스레드 (IO 스레드)의 정보가 필요한 GUI 스레드가 있습니다. IO 스레드는 직렬 포트에서 정보를 가져 오는 중입니다. Gui Thread의 모든 작업은 가져 오기 정보를 읽고 테이블에 표시하는 것입니다.C++에서 데이터를 공유하는 스레드
나는 IO 스레드가 뮤텍스로 보호 된 전역 구조체에 데이터를 넣어야한다고 생각했지만 GUI 스레드는 해당 구조체에서 읽어야합니다. 더 나은 구현이 있습니까? 이 경우 뮤텍스보다 중요한 섹션을 사용하겠습니까?
이제는 GUI 쓰레드를 사용하여 IO 데이터도 가져 오지 않는 이유에 대한 답변을 얻을 것이므로 멀티 스레딩이 필요하지 않습니다. 예, 저는 모범 사례를 배우기위한 간단한 예제를 제공하려고합니다.
고마워요!
안녕하세요, 각각을 복사 할 때 어떤 이점이 있습니까? 하나는 자신의 구조체를 누른 다음 하나의 글로벌 하나를 공유하는 데, 나는 여전히 당신이 어떤 경우에 뮤텍스를 사용 언급 한 것입니까? 중요한 부분에 대해서는 뮤텍스가 항상 뮤텍스라고 생각했기 때문에 실제로 뮤텍스와 같은 OS에서 중요한 부분이라고 생각했습니다. 따라서 전체 애플리케이션을 공유합니다. – Kam
아, 그리고 GUI 스레드에게 읽을 때이를 알릴 필요가있는 경우 구조체의 자체 복사본을 가지고 있다면, 그 구조체에 쓰지 않을 것이므로 뮤텍스가 필요하지 않습니다. – Kam
글쎄, 당신은 여전히 GUI 스레드 구조체에 IO 스레드 로컬에서 사본을 만들 때 뮤텍스가 필요하지만, GUI 스레드가 구조체로부터 임의의 시간에 읽는 것을 막는 뮤텍스는 필요하지 않을 것이다. 항상 일관된 상태가됩니다. 알림 후 10 초가 지나도 구조체를 업데이트하는 것이 안전하지 않을지라도 GUI가 읽기 여부를 확신 할 수 없습니다. 그래서 주위에 뮤텍스를 넣으십시오. 그러나 GUI 스레드가 읽을 수있는 시간은 아주 작습니다. –