inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Giới thiệu] Lập trình Qt 6 phần 2

Triển khai ví dụ về Thread thỏa mãn tính Re-entrancy

'Re-entrancy를 만족하는 Thread 예제 구현' 에서 질문있습니다.

363

rndstudy

3 câu hỏi đã được viết

1

안녕하세요. 수업내용과 약간 결이 다른 질문인데 궁금해서 질문 남깁니다.

'Re-entrancy를 만족하는 Thread 예제 구현' 에서 11분정도 됐을 때 numUsed가 0만 찍히는 출력 결과를 보여주셨습니다.

sleep으로 쓰레드를 멈추면 시간 차이가 큰 것 같아서 msleep, usleep으로 해도 동일하고, mutex로 lock-unlock을 해도 동일하게 0으로 출력 되더라구요.

 

출력창에 0만 출력되는 다른 이유가 있나요?

#include <QCoreApplication>

#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <QDebug>

int number = 0;
QMutex mutex;

class ThreadA : public QThread
{
public:
    ThreadA() {};

protected:
    virtual void run()
    {
        for (int i = 0; i < 10; ++i)
        {
//            sleep(1);
//            msleep(1);
            usleep(1);
            mutex.lock();
            number++;
            mutex.unlock();
        }
    };
};

class ThreadB : public QThread
{
public:
    ThreadB() {};

protected:
    virtual void run()
    {
        for (int i = 0; i < 10; ++i)
        {
            mutex.lock();
            qDebug() << "number: " << number;
            mutex.unlock();
        }
    };
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    ThreadA threadA;
    ThreadB threadB;

    threadA.start();
    threadB.start();

    threadA.wait();
    threadB.wait();

    return a.exec();
}

제가 만들어본 코드입니다.

gui qt

Câu trả lời 2

0

qtdev

안녕하세요.

 

제가 설명드리려 했던 부분은 다른 쓰레드에서 상황에 맞게끔 동기화를 어떻게 하는지 예제를 보여준 것이라서요.
그렇기 때문에 Re-Entrancy 이외의 상황은 의미가 없습니다.

 

따라서 이 예제에서는 쓰레드간의 동기화를 어떻게 하는지만 이해하는 것이 맞습니다.

 

혹시 더 궁금한게 있으면 문의해주세요.

감사합니다. 김대진 드림.

 

0

rndstudy

number:  0
number:  0
number:  0
number:  0
number:  0
number:  0
number:  0
number:  0
number:  0
number:  0

 위 코드 출력 결과입니다.

Build system의 Obs 에 관한 질문

1

29

2

PLAY 버튼 동작 미리보기 관련 질문드립니다!

0

34

2

pygame 설치오류

0

126

1

로드맵 재수강 로드맵 할인문의

1

43

2

PDF파일 다운로드 위치

0

60

2

강의 재수강 문의

1

55

2

언리얼 버전 문의드립니다!

0

81

2

강의 연장 문의

1

79

2

아직 강의를 시청중이긴 한데 혹시 다음 강의도 준비하고 계신가요?

1

101

2

custom Widget 강의 에서 알려주신 promoted widgets 질문 드립니다.

1

118

2

QML로 만든 파일도 똑같이 설치판 제작하면 되나요?

0

171

2

'Re-entrancy' 사용 시 프로그램 속도 문의드립니다.

1

114

2

QImage에서 이미지가 안불러와집니다.

1

318

2

Android 폰에서 개발환경 설정과 예제 App 구현 질문드립니다.

1

304

1

크로마키 영상처리 소스코드 구현 (2/2편) 에러가 발생합니다.

1

362

1

Writing QML Extensions with C++ 내용에 대해서 질문드립니다!

1

346

1

Qt Creator 기능 질문드립니다.

1

340

1

위젯프로그램 위에 챠트 띄우기

1

559

1

QT로 이미지나 json 파일 가져올때

1

435

1

QT로 구현한 프로그램 실행관련 및 추가질문

1

1361

3

Go to slots 을 사용했을때 connect 함수 위치

1

358

1

Qt Quick 모듈의 해석 질문드립니다.

3

362

2

QT에서 그래프 챠트 그리는 방법 문의

2

1866

2

Window에서 프로그래밍한 것을 리눅스로 옮기는 방법

2

391

1