[C#]System.Timers.Timer 사용시 Race Condition
·
Programming/C#
How should the clean-up of Timers declared inside the scope of a function be managed? In the following code, a Timer is declared inside a function, where it also subscribes to the Elapsed event: void StartTimer() { System.Timers.Timer timer = new System.Timers.Timer... stackoverflow.com 위 StackOverFlow 글에서 핵심적인 내용은 Do beware the very nasty threading race bug that's hidden under the floor mat, th..
[C++] Char * vs Char []
·
Programming/C++
해당 포스팅은 Char * 와 Char [] 간의 비교 및 난해함에 관해서 설명한다. 초보자에게 유용한 글이 될 것이다. 1. 굳이 필요한가. C++ 11 이상을 주로 사용하는 사람들은 보통 std::string 과 같은 string 형식을 많이 사용하지 char * 나 char [] 은 주로 사용하지 않을것이다. 때문에 char 에 대한 필요성도 그다지 느끼지 못할 것이고, 추상적으로만 개념을 잡아두었을 가능성이 매우 높다. 하지만 char *, char [] 와 std::string 은 매우 다른 형태라는점을 인지 하여야 한다. std::string 은 그 가변성으로 인해 사용하기 매우 편리하지만, 네트워크 송수신 용도로 사용하는 용도 등에서는 반드시 char[] 가 사용될 수 밖에 없다. 때문에 s..
Endian 변환 과정에 대하여
·
Programming
Little Endian, Big Endian 에 대해 모르는 사람은 아래 포스팅을 참고하길 바란다. 리틀 엔디안 VS 빅 엔디안 먼저 둘을 비교하기에 앞서 엔디언이란 무엇인가? 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 genesis8.tistory.com 나는 15살때부터 프로그래밍에 입문하였으니, 놀면서 공부한 기간 8년 + 직업적으로 다룬 기간 2년해서 나름(???) 10년인데 ENDIAN 변환은 실무에 적용하려면 버벅이게 된다... INT 가 4 바이트고, 1 바이트는 8 비트라는 기본적인 구조는 하도 외워서 개념적으론 알고 있지만. 이렇게 낮은 단위까지 고려하며 실무에 적용 할 일이 그리..
[C++] std::thread 를 멈추는 방법
·
Programming/C++
원칙적으로 이미 실행되어 .join() 되거나, .detach() 된 std::thread 를 멈추는것은 매우 힘들어 보인다 (std::async 포함) Cancelling a thread using pthread_cancel : good practice or bad I have a C++ program on Linux (CentOS 5.3) spawning multiple threads which are in an infinite loop to perform a job and sleep for certain minutes. Now I have to cancel the running threads in case a... stackoverflow.com 우회적으로 pthread 라는 녀석을 이용해서 이미 ..
[C++] std::thread vs std::async
·
Programming/C++
C++ Chapter 19.5 : 작업 기반 비동기 프로그래밍 async, future, promise 인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀 🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기! ansohxxn.github.io 링크를 참조하자, Thread, Async 간의 비교를 면밀히 해 두었다. 간략한 요약 1) std::async 역시 Thread 이다. 2) std::async 는 자동적으로 ThreadPool 에서 관리된다. 3) std::async 는 '값을 리턴' 받는데에 보다 중점이 맞춰져 있다. 4) std::thread 의 경우 동기점을 맞추고 블럭하는데에 .join() 이 쓰이고, 비동기로 운용하는데에 .detec..
[C++] 동적 라이브러리 vs 정적 라이브러리 개인 의견
·
Programming/C++
개인적으로 '정적' 라이브러리를 사용하는것을 더 선호한다.  정적 라이브러리(Static library) vs 동적 라이브러리(Dynamic library)1. Static library Dynamic (linking) library (흔히 얘기하는 DLL)을 설명하기 위해 간단하게 정리한다. 특정 기능의 라이브러리를 static 하게 제작한다는 것은 link 단계에서 라이브러리(*.lib 파일)를 실행 바..luyin.tistory.com 동적 라이브러리와 정적 라이브러리Indexgoodgid.github.io 현대에 와서 C++ 언어가, C언어를 제외한 고급언어 대비 갖는 장점이라 함은'메모리 절약', '속도' 이 두가지 측면일 것이다. 동적 라이브러리 대신에 → 정적 라이브러리를 사용하는것은 속도에..
코딩 네이밍 규칙
·
Programming
평소에도 나름 머릿속에 규칙을 만들어서 변수명을 사용 하였는데, 코드를 짜다보니까 점점 이 규칙이 복잡해 지는듯 싶어 포스팅에 정리한다. 해당 포스팅은 지속적으로 수정될 예정이다. 1. 헝가리안 표기법 지양 헝가리안 표기법 - 위키백과, 우리 모두의 백과사전 헝가리안 표기법(Hungarian notation) 또는 헝가리 표기법은 컴퓨터 프로그래밍에서 변수나 함수의 이름에 그 종류, 곧 흔히 데이터 타입 따위를 명시하는 표기법으로, 명명규칙의 일종이다. 고안자 ko.wikipedia.org 현대 IDE 는 기능이 출중해서 헝가리안 표기법을 앵간해선 사용하지 않아도 된다. 특별히 강조해야 할 경우에만 제한적으로 사용. ※ IDE가 없어도 왠만한 환경에서 VSCode 사용이 가능하다. IDE를 대체할 수단이..
[C#] 반복문 캐싱 최적화
·
Programming/C#
이전에 봤던 책에서 C++ 의 최적화가 얼마나 중요한지 짚고 넘어갔었다. 한빛미디어 Optimized C++, C++ 최적화 후기 이 책은 크게 '깊게' 들어가는 경향은 없지만 막 초급자를 탈피하여 중급자로 진입한 C++ 프로그래머 에게는 유용한 책이 될 것이다. 이 책을 읽고 나면 C++ 의 '미묘함' 을 다시한번 확인할 수 있 cypsw.tistory.com 최근 다중 Thread 내의 여러가지 for 문이 동시에 돌아가는 구문이 있었는데 바꾼 코드가 조금 지연이 발생하여 원인을 찾던 중, C# 에서도 캐싱이 적용되는지 확인하기 위해 간단하게 테스트 해 보았다. using System; using System.Collections.Generic; using System.Diagnostics; name..
[Java] 인터페이스 구현 방법
·
Programming/Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package test; interface IKK { void start(); } public class Gisafirst { public static void b(IKK k) { k.start(); System.out.println("aa"); } public static void main(String[] args) { b(new IKK() { @Override public void start() { // TODO Auto-generated method stub System.out.println("interface"); } }); }..
[C++] 인터페이스에 관한 팁 (순수가상함수)
·
Programming/C++
1. 소멸자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include class AAA { public: //virtual ~AAA() {}; virtual void print() = 0; }; class A { public: A() {}; int b = 10; virtual void print() { std::cout