Qt에서 여러 스레드가 'emit'을 사용하여 많은 수의 신호를 보내면 트리거가 매우 느립니다. 큐잉 메커니즘이있는 것처럼 보입니다. 회선의 신호 슬롯을 빠르게 트리거하는 좋은 방법이 있습니까?Qt에서 신호 슬롯을 빠르게 트리거하는 좋은 방법이 있습니까?
답변
당신이 묻는 것은 Qt::DirectConnection
입니다. 슬롯이 즉시 호출되도록하려면 connect()
에 지정해야합니다.
가 사용될 때 상기 신호가 방출 될 때
슬롯 즉시 호출된다. 슬롯은 신호 스레드에서 실행됩니다.
그렇지 않은 경우 기본 Qt 방식은 Qt::AutoConnection
입니다.
신호를 보내는 스레드에 수신기가있는 경우 Qt :: DirectConnection이 사용됩니다. 그렇지 않으면 Qt :: QueuedConnection이 사용됩니다. 연결 유형은 신호가 방출 될 때 결정됩니다.
당신은 connect()
에서 연결 유형을 지정할 수 있습니다 :이 두 가지 방법과 사용하는 here이다 사이의 차이에 대한
QMetaObject::Connection QObject::connect(const QObject *sender, const
char *signal, const QObject *receiver, const char *method,
Qt::ConnectionType type = Qt::AutoConnection)
아주 좋은 대답.
물론 슬롯 메서드는 스레드 안전성이 있어야합니다. 예를 들어 GUI를 업데이트하는 것은 제외됩니다. 실수로 스레드가 안전하지 않은 슬롯에 직접 스레드 간 연결을하는 것을 피하기 위해 스레드 안전 슬롯과 또 다른 "정상"슬롯을 갖는 두 개의 관련 클래스로 논리를 분리하는 것이 더 좋을 수 있습니다. – hyde
@hyde 동의하지만 우리는 어떤 시작 주제가 슬롯에서하고 싶어하는지 알지 못합니다. 그는 대기열을 사용하지 않고 슬롯을 호출하는 방법을 묻습니다. – demonplus
예, TBH는 XY 문제와 같은 것 같습니다 ... – hyde
- 1. qt에서 신호/슬롯을 사용하여 gui 업데이트
- 2. QT에서 신호와 슬롯을 어떻게 연결합니까?
- 3. Qt에서 동적 신호 및 슬롯을 만드는 방법은 무엇입니까?
- 4. 어떻게 pyqt가 qt에서 신호와 슬롯을 구현합니까?
- 5. 신호 및 슬롯을 사용하여 파일을 점진적으로 업로드
- 6. Qt에서 시간 함수로 슬롯을 만드는 방법은 무엇입니까?
- 7. Qt 신호/슬롯을 가진 제작자/소비자
- 8. Qt에서 신호와 슬롯을 추적하는 방법은 무엇입니까?
- 9. Qt에서 QProcess :: started() 신호에 슬롯을 연결하는 방법?
- 10. 신호 및 슬롯을 사용하여 포인터 업데이트
- 11. Qt에서 신호 슬롯 연결 모델
- 12. viewDidUnload 이벤트를 트리거하는 방법이 있습니까?
- 13. 프로세스를 트리거하는 민감도 목록의 신호
- 14. 폴더 구조를 나타내는 다이어그램을 빠르게 만들 수있는 좋은 방법이 있습니까?
- 15. 쿼리를 빠르게 선택하는 방법이 있습니까?
- 16. 신호/슬롯을 사용하여 순환 종속성을 피합니까?
- 17. Qt QThread는 worker에서 gui로가는 신호/슬롯을 사용합니다.
- 18. PyQt5 슬롯을 클래스의 신호 함수에 어떻게 연결합니까?
- 19. 메모리 관리 및 신호/슬롯을 어떻게 처리합니까?
- 20. pyQT에서 대화 신호/슬롯을 어떻게 사용자 정의합니까?
- 21. 부스트 :: signals2 - 인수로 신호 슬롯을 전달
- 22. QT 신호 슬롯을 연결하고 생성자에서 초기화하십시오.
- 23. Qt에서 두 위젯간에 OpenGL 이미지를 전송하는 가장 좋은 방법
- 24. 네트워크를 통해 Qt 신호/슬롯을 실행하기위한 아이디어가 있습니까?
- 25. QT에서 신호 및 슬롯을 사용할 때 데이터를 수신 할 수 없습니다
- 26. IE에서 option.click 이벤트를 트리거하는 해결 방법이 있습니까?
- 27. 부울 :: 신호 중 하나가 true를 반환하는 경우 해당 슬롯을 호출하는 것을 막을 수있는 방법이 있습니까?
- 28. 배열의 일부를 더 빠르게 증분시키는 방법이 있습니까?
- 29. QMovie를 사용하는 GIF 애니메이션과 Qt의 신호/슬롯을 전환하십시오.
- 30. QT에서 이름이 같지만 인수가 다른 두 개의 슬롯을 사용할 수 있습니까?
신호를내는 스레드에서 슬롯을 호출 하시겠습니까? 그렇다면 스레드가 안전한지 확인하고 호출하는 모든 것이 스레드로부터 안전합니다. 특히, GUI 작업은 모두 메인 스레드에서 이루어져야합니다! – hyde