데이터 구조 정렬 (Data Structure Alignment)

Processor 대부분의 컴퓨터는 32비트 또는 64비트의 프로세서를 갖고 있습니다. 이는 프로세서가 데이터를 처리할 때 사용하는 레지스터1)의 크기, 데이터들의 전송 통로인 버스의 폭에 따라 결정됩니다. 💡 Tips Bit Byte Count Range 8 1 \(2^{8} = 256\) -128 ~ 127 32 4 \(2^{32} = 4,294,967,296\) −2,147,483,648 ~ 2,147,483,647 64 8 \(2^{64} = 18,446,744,073,709,551,616\) –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 맨 왼쪽 비트는 부호를 나타내는 비트이고, unsigned를 붙이면 부호 비트 자리도 데이터가 올 수 있음 Memory access 프로세서가 메모리에 읽기 또는 쓰기를 할 때도 32비트 또는 64비트씩 접근하여 처리합니다. 따라서 프로세서의 아키텍쳐에 맞추어 4의 배수 또는 8의 배수의 사이즈가 되게 코딩을 해주면 메모리 접근을 줄일 수 있고 효율과 성능을 높일 수 있습니다! ...

2023년 05월 11일 · 3 min · 629 words · JongBin

Thread Pool 사용 이유 및 C++ 구현

Thread ❓ 💡 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티 스레드라고 한다. wikipeida 멀티 스레드를 사용하지 않는 프로그램은 찾아보기 어렵습니다. 스레드가 하나인 환경에서 작업이 지연된다면 프로그램 전체가 멈추는 불상사가 생기기 때문이죠. 잘 만들어진 프레임워크를 사용하기 때문에 신경 쓸 필요가 없기 때문이죠! 소스 코드를 여러 단위로, 즉 병렬로 처리할 수 있게 해주는 스레드를 C++에서 어떻게 사용하는지 알아보도록 하겠습니다. ...

2023년 05월 05일 · 7 min · 1279 words · JongBin