2017-02-16 1 views
0

안녕하세요. 안녕하세요.QAbstractItemModel 하위 클래스가 스레드로부터 안전합니까?

오늘 나는 구현하려는 것에 대해 많은 의문을 표시했습니다.

내 응용 프로그램의 다른 부분에서 메시지를 표시하는 데 사용되는 Qt가있는 일부 종류의 터미널 코드가 필요합니다.

지금은 QList 개의 메시지 줄을 나타내는 모델 클래스를 구현했으며이를 내 터미널 창의 위젯에 매핑하려고합니다 (DataWidgetMapper 고려 대상).

그러나 그때 나를 때렸다. 내 앱의 다른 부분이 동시에 새 메시지를 추가하려고한다면 어떨까요?
심지어 일어날 수 있습니까?
BeginInsertRow은 이러한 종류의 물건을 안전하게 지키고 있습니까?


짧은 이야기가 짧습니다. 나 혼자서 많은 정보를 찾을 수 없다. 그래서 나는 이것이 올바른 방법으로하고 있는지 궁금해지기 시작했습니다.

저는 Qt 세계에서 약간 새로운 사람입니다. 사전 : 당신이 QAbstractItemModel의 상단에 자신의 모델을 구현하고 있기 때문에

+0

설명서를 읽으셨습니까? – tambre

+0

@tambre 물론 했어. 그것은 기본적으로 내가 지난 주 동안하고 있었던 모든 것입니다. 방금 ​​스레드 안전에 대해 나에게 위로를주는 것을 찾지 못했습니다. 그러나 나는 거의 시간을 들이지 않고 많은 것을 읽는다는 것을 인정합니다. 모든 것이 제게는 분명하지 않습니다. – Drenghel

+0

http://doc.qt.io/qt-5/model-view-programming.html#an-edit-model 물론 도움이 되긴하지만 내 걱정을 풀어주지는 않습니다. – Drenghel

답변

2

에서

덕분에,이 스레드 안전 여부의 결정은 당신에게 달려 있습니다. 자체 내부 데이터 모델을 설계해야하므로 모델 내에서 데이터를 변경하고 액세스하는 메소드가 사용자 자신의 것입니다. 스레드의 내용을 완벽하게 제어 할 수 있으므로 다른 스레드가 동시에 데이터를 업데이트하고 액세스 할 수 없도록하는 데 필요한 스레드 잠금 메커니즘을 추가 할 수 있습니다. 데이터 액세스를 제공하는 모든 QAbstractItemModel 메서드는 파생 된 메서드를 호출합니다.

+0

답변 해 주셔서 감사합니다. 나는 아무것도 얻지 못한 것 같아. 나는 어떤 쓰레드도 직접 구현하지 않았기 때문에 아무런 문제가 발생하지 않을 것이라고 생각한다. – Drenghel

+0

그럼 당신은 완벽하게 안전하다. :) 아직도 좋은 질문이고, 그런 것들에 대해 생각하는 것이 좋습니다. – goug

+0

고마워, 나는 바보 같은 느낌이 들었다 :) – Drenghel

관련 문제