C++15 복잡한 버전 : C++ 세마포어(semaphore) 및 멀티-스레딩(multi-thread)을 사용한 병렬 처리에 대해 알아보자 C++ 멀티스레딩(multi-thread) 기본 개념: 세마포어(semaphore)와 while() loop를 사용한 프로세스 병렬 처리 멀티스레딩은 여러 실행 스레드가 단일 프로세스 내에서 동시에 실행될 수 있도록 하는 프로그래밍 개념입니다. 스레드는 프로세스 내에서 가장 작은 실행 단위이며 가볍고 독립적인 명령 시퀀 easycode.tistory.com → 해당 글과의 차별점 : 본 thread의 포스팅의 경우 총 5가지 thread로 확장했으며, 각 thread는 단일 반복이 아닌 16번의 반복 처리 리 과정을 거칩니다. 또한, header_v1.h 파일의 구조체를 통해 각 thread의 매개변수로 구조체를 선언했으며, 각 thread가 연산 처리 후 해당 구조체 변수에 저장할 수 있는 type으로.. C++/C++ 적용 예제 2023. 3. 20. C++ 멀티스레딩(multi-thread) 기본 개념: 세마포어(semaphore)와 while() loop를 사용한 프로세스 병렬 처리 이해하기 Multi-threading 멀티스레딩은 여러 실행 스레드가 단일 프로세스 내에서 동시에 실행될 수 있도록 하는 프로그래밍 개념입니다. 스레드는 프로세스 내에서 가장 작은 실행 단위이며 가볍고 독립적인 명령 시퀀스로 생각할 수 있습니다. 각 스레드는 자체 스택 및 프로그램 카운터를 갖지만 동일한 프로세스의 다른 스레드와 메모리 및 파일 핸들과 같은 동일한 주소 공간 및 리소스를 공유합니다. 멀티스레딩의 기본 개념은 여러 작업 또는 작업의 일부를 동시에 실행하여 애플리케이션의 성능과 응답성을 향상시키는 것입니다. 스레드가 여러 코어에 분산되어 병렬로 실행될 수 있으므로 이는 여러 CPU 코어가 있는 시스템에서 특히 유용할 수 있습니다. 멀티스레딩과 관련된 몇 가지 주요 개념은 다음과 같습니다. 동시성(Co.. C++/C++ 적용 예제 2023. 3. 20. C++ IPC(프로세스 간 통신) 완벽 정리 : 공유 메모리 및 Windows 세마포어(semaphore)와 멀티-스레드(multi-thread) 동기화하는 방법을 알아보자 [예시 코드 첨부] [데이터 전송 구성도] 서버(server_v2.cpp) ↔ 클라이언트(client_v4.cpp) → 다른 프로젝트/프로세스(BasicThread_v0.cpp) □ 서버와 클라이언트 : TCP/IP 송수신 □ 클라이언트와 다른 프로젝트/프로세스 : 공유 메모리(Shared Memory) 꼭 읽으면 좋은 글 본 포스팅이 어렵다면, 아래 링크의 포스팅을 공부하면 쉽게 이해할 수 있습니다. 1. TCP/IP 기초: https://easycode.tistory.com/19 3. TCP/IP 중급: https://easycode.tistory.com/20 4. TCP/IP 고급: https://easycode.tistory.com/21 5. 공유 메모리 : https://easycode.tistory.com/23 .. C++/C++ 적용 예제 2023. 3. 19. C++ Sleep() 및 SetTimer() 함수를 사용하여 TCP/IP 네트워크에서 안정적인 시간(Time) 지정 통신 구현을 알아보자 프로그램 작업에는 여러 가지 이유로 sleep() 및 settimer()와 같은 컨트롤이 필요합니다. 1. Timing control : 경우에 따라 프로그램은 다음 작업을 실행하기 전에 일정 시간 동안 대기해야 합니다. 예를 들어 메인 메뉴를 표시하기 전에 몇 초 동안 시작 화면을 표시하는 프로그램입니다. 2. Asynchronous execution : 경우에 따라 프로그램은 여러 작업을 동시에 또는 특정 순서로 실행해야 합니다. 예를 들어 백그라운드에서 장기 실행 작업을 수행하는 동안 진행률 표시줄을 업데이트하는 프로그램입니다. 3. User experience : 경우에 따라 프로그램은 사용자가 메시지나 프롬프트를 읽거나 반응할 수 있도록 일정 시간을 제공해야 합니다. 예를 들어 자동으로 닫히기 .. C++/C++ 적용 예제 2023. 3. 12. C++ TCP/IP를 사용한 반복(While문 활용) 데이터 전송 : 단계별(Step by Step) 가이드 완벽 정리(feat. 구조체 활용) [잠깐만~] 본 포스팅을 공부하기 전에 TCP/IP 기반 Server/Client 구조를 모르면 Line by Line으로 코드가 설명된 아래의 포스팅을 먼저 공부하고 오세요. 본 포스팅의 아래 포스팅의 upgrad 버전이기 때문에 Line by Line으로 코드 설명이 없습니다. C++ TCP/IP 가장 단순한 소켓 통신 네트워크 구현 - Server / Client (feat. 식당 주문 받기에 비유해보자) 소켓통신 구현 소켓 통신은 네트워크에서 실행되는 둘 이상의 프로세스 간에 데이터 교환을 허용하는 IPC(프로세스 간 통신) 방법입니다. 소켓은 네트워크의 두 프로세스 간의 통신을 위한 끝점 easycode.tistory.com 서버/클라이언트 데이터 반복적으로 주고받기 TCP/IP 통신은 서버와 .. C++/C++ 적용 예제 2023. 3. 12. [되돌아 보며] C++의 꽃이라고 불리는 포인터(pointer, *), 레퍼런스(reference, &) 기본 개념을 되돌아보자. '되돌아보며'가 필요한 이유 객체지향 초급 편에 들어가기 앞서 C++의 꽃이라고 불리는 포인터, 레퍼런스 개념을 다시 한번 짚고 넘어가겠습니다. 자바(JAVA), 파이썬(Python), C#(CSharp) 과는 다르게 메모리 할당을 직접적(수동적)으로 Contorl 할 수 있다는 장점이 있습니다. → 물론, 잘했을 경우에만 해당됩니다. 잘못했을 경우 잘못된 메모리 할당으로 누수가 생길 수 있습니다. 메모리 할당을 직접적으로 Control 할 수 있다면 좋은 것은 바로 'Process 속도 향상'입니다. 그래서 영상 처리와 같이 Just in Time Process의 경우 C#, Python, JAVA와 같은 언어를 사용하기보다는 공유 메모리 및 Thread 연산을 통해 연산 처리 속도를 높이는 작업이 주.. C++/객체지향 초급편 2023. 1. 30. [입문편] 10강. Class 기본 구조&예시 및 Struct 구문과의 차이점을 알아보자 강의에 들어가기 앞서 C++의 핵심은 객체지향의 도입입니다. 그래서 본 강의의 구성을 아래와 같이 구성했습니다. C++ 입문편 → 객체지향 초급편 → 객체지향 중급편 → 객체지향 고급편 그렇기 때문에 입문 편에서는 Class 파트의 가장 기본적인 구조에 대해서만 다룰 예정이며, "객체지향 초급편 → 객체지향 중급 편→ 객체지향 고급 편"에서 보다 자세하게 강의를 다룰 것입니다. 그렇기 때문에 본 강의에서는 단순히 Class란 이런 것이다 정도의 느낌만 알고 넘어가면 충분합니다. Class의 기본 구조 및 예시 C++에서 클래스는 데이터 멤버(특성 또는 속성이라고도 함) 및 멤버 함수(메서드 또는 동작이라고도 함)를 단일 엔터티 내에서 캡슐화하는 사용자 정의 데이터 형식입니다. 클래스는 키워드 "class.. C++/입문편 2023. 1. 22. [보충 설명] 8.1.강 malloc & free와 new&delete에 대해 알아보자 malloc() & free() 와 new() & delete() 특징 C++에서 malloc() 및 free() 함수는 힙에서 동적으로 메모리를 할당 및 할당 해제하는 데 사용됩니다. malloc()은 지정된 크기의 힙에 메모리 블록을 할당하는 데 사용되는 C 표준 라이브러리의 함수입니다. 이 함수는 할당된 메모리의 첫 번째 바이트에 대한 포인터를 반환하거나 할당에 실패한 경우 null 포인터를 반환합니다. free()는 이전에 malloc()으로 할당된 메모리 블록을 할당 해제하는 데 사용되는 C 표준 라이브러리의 함수이기도 합니다. 이 함수는 메모리 블록에 대한 포인터를 인수로 사용하고 다시 사용할 수 있도록 시스템에 다시 해제합니다. 반면에 C++는 힙에 메모리를 할당하고 할당 해제하는 new 및.. C++/입문편 2023. 1. 22. 8강. 실행중인 프로그램의 메모리 공간을 살펴보자 (데이터, 스택, 힙, malloc & free) 메모리 공간 C++에서 메모리는 데이터가 저장되고 컴퓨터 프로그램에 의해 조작되는 물리적 공간을 의미합니다. 메모리는 기본 메모리(RAM이라고도 함)와 보조 메모리(예: 하드 드라이브 및 플래시 드라이브)의 두 가지 주요 범주로 나눌 수 있습니다. 기본 메모리는 운영 체제와 실행 중인 프로그램이 저장되고 실행되는 컴퓨터의 기본 메모리입니다. 휘발성이므로 전원이 꺼지면 저장된 데이터가 손실됩니다. 기본 메모리의 크기는 제한되어 있으며 일반적으로 기가바이트(GB) 단위로 측정됩니다. 반면 보조 메모리는 비휘발성이며 현재 사용하지 않는 데이터와 프로그램을 저장하는 데 사용됩니다. 보조 메모리의 크기는 일반적으로 테라바이트(TB) 또는 페타바이트(PB) 단위로 측정됩니다. C++에서 메모리 관리는 프로그램 실행.. C++/입문편 2023. 1. 22. 7강. 포인터와 레퍼런스 기본 개념 및 예시 코드로 살펴보기(With Call-by-value, Call-by-reference) Call-by-value 살펴보기 C++ 및 기타 많은 프로그래밍 언어에는 함수에 인수를 전달하는 두 가지 주요 방법인 값에 의한 호출과 참조에 의한 호출이 있습니다. 값별 호출은 함수에 인수를 전달하는 기본 방법입니다. call-by-value로 함수를 호출하면 인수의 값이 함수로 전달됩니다. 결론적으로, 함수는 인수의 복사본에서 작동하므로 함수 내부의 인수에 대한 변경 사항은 함수 외부의 원래 변수에 영향을 주지 않습니다. 예를 들어, 다음 코드에서: void increment(int x) { x++; } int main() { int a = 5; increment(a); cout C++/입문편 2023. 1. 22. 6강. 단일 및 이중 배열 기본 구조 및 예시 살펴보기 단일 배열(Single Array) 이란? C++에서 배열은 연속 메모리 위치에 저장된 동일한 데이터 유형의 요소 모음입니다. 배열은 정수, 실수 또는 문자와 같은 동일한 데이터 유형의 여러 값을 저장하는 데 사용할 수 있습니다. C++에서 배열의 기본 구조는 배열 이름과 대괄호 []로 묶인 배열의 크기가 뒤따르는 데이터 유형을 사용하는 것입니다. 다음은 C++에서 정수 배열을 선언하는 방법의 예입니다. int myArray[5]; 이것은 5개의 정수 값을 저장할 수 있는 "myArray"라는 배열을 선언합니다. 배열 요소는 0부터 시작하여 인덱싱되므로 첫 번째 요소는 myArray[0]이고 두 번째 요소는 myArray[1]입니다. 선언 시 배열을 초기화할 수도 있습니다. int myArray[] = .. C++/입문편 2023. 1. 22. 5강. Switch/Case문 기본 개념 설명 및 코드 예시를 살펴보자 Switch - Case 기본 구조 C++에서 "switch" 문은 식의 값에 따라 다른 작업을 수행할 수 있도록 하는 제어 흐름 문입니다. 여러 "if-else" 문을 사용하는 대신 사용할 수 있습니다. C++에서 "switch" 문의 기본 구문은 다음과 같습니다. switch (expression) { case value1: // code to be executed if expression == value1 break; case value2: // code to be executed if expression == value2 break; // ... default: // code to be executed if expression does not match any of the cases break; .. C++/입문편 2023. 1. 22. 이전 1 2 다음