no image
반도체란
서론반도체는 반을 의미하는 Semi와 도체를 의미하는 Conductor의 합성어로 semi-conductor라고 부른다.반도체를 알기 전에는 도체와 부도체, 절연체에 대해 알아야 한다.  도체 : 전기 흐름이 가능한 물체전도체 : 전기가 잘 흐르는 물체부도체 : 전기가 흐르지 않는 물체절연체 : 저항이 커서 전기가 잘 흐르지 않는 물체도체는 전류가 자유롭게 이동할 수 있는 매개체를 의미하며, 금속과 같이 전도성이 높은 물질들이 전류를 전달하는 도체로 사용된다.부도체는 도체의 반대로 전류가 자유롭게 통과할 수 없는 매개체를 의미한다.반도체는 전기도도가 도체와 부도체의 중간정도 되는 물질로 빛이나 열, 불순물을 가해주면 전기가 통하고 조절할 수 있는 물질을 의미한다. 그러면 도체도 아니고 부도체도 아니고 절..
2024.07.26
QT - 스레드 뮤텍스
뮤텍스(Mutex)뮤텍스는 상호 배제(Mutual Exclusion)의 약자로 락(Lock)이라고도 한다.이는 여러 쓰레드를 실행하는 환경에서 자원에 대한 접근 제한을 위한 동기화 메커니즘이다.상호 배제 동시성 제어 정책(Mutual Exclusion Concurrency Control Policy)를 시행하도록 설계되었으며 가능한 다양한 방법을 통해 여러 고유한 구현이 존재한다 쉽게 말하자면 멀티스레딩 한경에서 공유 자원에 대한 접근을 조율하기 위해 사용되는 동기화 기법이다. 특징상호배제뮤텍스는 한 번에 하나의 스레드만이 공유 자원에 접근할 수 있도록 보장한다.이를 통해 데이터의 일관성을 유지하고 경쟁상태(Race Condition)을 방지할 수 있다.잠금과 해제잠금(Lock): 스레드가 공유 자원에 ..
2024.07.25
QT - 스레드 동기화(Thread Synchronization)
서론스레드 동기화는 여러 스레드가 동시에 접근할 수 있는 공유 자원에 대한 접근을 조절하여 데이터의 일관성을 유지하고경합 조건(Race Condition)을 방지하는 기술이다.동기화를 하지 않으면 여러 스레드가 동시에 같은 자원에 접근하여 예기치 않은 결과를 초래할 수 있다.주요 개념임계 구역(Critical Section)여러 스레드가 동시에 접근하면 안되는 코드 블럭이다. 이 구역에서는 공유 자원에 대한 읽기 또는 쓰기가 수행된다. 경합 조건(Race Condition)두 개 이상의 스레드가 동시에 임계 구역을 실행할 때 발생하는 문제로, 데이터의 일관성이 깨지는 현상이다. 원자성(Atomicity)더 이상 쪼갤 수 없는 작업 단위로, 다른 스레드가 끼어들 수 없는 연산을 말한다.동기화 방법뮤텍스(M..
2024.07.24
no image
QT - Thread (3) 2개의 클래스 객체를 스레드로 실행시키기
서론MainWindow에서 2개의 객체를 동시에 실행시켜보자.흐름도 1. 클래스간의 헤더 파일에서 slots 함수와 signal을 선언 및 cpp파일에서 slots 함수 구현을 해준다. - 슬롯 함수void Custom::doWork(){ for(int i=0; i 2. mainwindow.cpp 파일에서 signal과 slots 함수를 연결해준다. worker->moveToThread(workerThread); custom->moveToThread(customThread); connect(workerThread, SIGNAL(started()), worker, SLOT(doWork())); connect(customThread, SIGNAL(started()), custom,..
2024.07.24
no image
QT - Thread (2) [공식문서를 살펴보자]
서론 QT에서의 Thread를 공식문서와 함께 알아보자https://doc.qt.io/qt-6/qthread.html#protected-functions QThread Class | Qt Core 6.7.2 doc.qt.ioPublic Function반환형메서드설명 QThread(QObject *parent = nullptr)QThread 객체를 생성, 선택적으로 부모 QObject 설정가능virtual~QThread()QThread 객체를 소멸, 소멸자가 호출될 때 스레드가 종료되지 않았으면 스레드를 종료QAbstractEventDispatcher *eventDispatcher() const현재 스레드의 이벤트 디스패처를 반환이벤트 디스패처는 이벤트 루프에서 이벤트를 처리하는 역할을 한다.boolisF..
2024.07.22
Qt - Thread(1)
Thread란 무엇인가스레드는 프로그램에서 가장 작은 실행 단위로, 컴퓨터가 명령어를 수행하는 순서를 결정한다.한 프로그램 내에서 동시에 여러 작업을 수행하게 만드는 역할을 한다. 프로세스 내에서 실행되는 각 스레드는 자신만의 레지스터 세트와 프로그램 카운터를 가지지만, 같은 포르세스 내의 다른 스레드와 힙 메모리, 전역 변수 등을 공유한다. 스레드는 프로세스보다 더 적은 리소스를 사용하여 생성하거나 제거할 수 있기 때문에, 동일한 프로세스 내에서 다양한 태스크를 빠르게 전환할 수 있다. 이는 사용자 인터페이스가 있는 응용 프로그램에서 중요한데, 이런 프로그램에서는 작업을 동시에 처맇거나, 한 작업이 완료될 동안 다른 작업을 계속 진행해야 할 때가 많다.  #include #include void fun..
2024.07.22
no image
QT project - 메모장 구현하기
서론윈도우에서 제공하는 메모장처럼 새로열기, 열기, 저장 기능을 만들어보자 메뉴바 구현메뉴바를 구현하기 위해서는 3가지가 필요하다.1. 메뉴바2. 메뉴바 위에 올릴 메뉴들3. 메뉴를 누르면 실행할 액션들따라서 QMenuBar, QMenu, QAcion들을 헤더파일에 포함시키면 된다. notepad.h#ifndef NOTEPAD_H#define NOTEPAD_H#include #include #include #include #include #include namespace Ui {class Notepad;}class Notepad : public QDialog{ Q_OBJECTpublic: explicit Notepad(QWidget *parent = nullptr); ~Notepad();..
2024.07.19
QT - QFileDialog 사용해보기
QFileDialog디렉토리 or 파일을 선택하는 GUI 인터페이스를 제공한다. QFileDialog::getExistingDirectoryQString QFileDialog::getExistingDirectory( QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly)사용자가 디렉터리를 선택하도록 하는 파일 대화 상자를 연다.매개변수parent: 파일 대화 상자의 부모 위젯caption: 파일 대화 상자의 제목dir: 파일 대화 상자가 처음 열릴 때 표시할 디렉토리 ..
2024.07.19