trading api

  • c# lock으로 멀티뜨레드 대이터 래이스 막기

    대이터 래이스 아래의 예제는 일부러 data race가 일어나게 한 거다. 동시에 두 개의 뜨레드에서 하나의 리스트에 대이터를 쓴다. 그 결과 리스트 값들은 듬성듬성 빠져 있다. 하나의 뜨레드에서 쓰기 작업을 끝내기 전에 다른 뜨레드에서 덮어쓰기 때문이다. lock으로 동기화 리스트에 쓰는 부분을 아래와 같이 lock으로 둘러싸면 대이터 래이스는 일어나지 않는다. 먼저 lock에 다다른 리스트에 대한 쓰기 작업이…

  • c# DateTime과 TimeSpan으로 날짜와 시간 제어하기

    DateTime .네트의 날짜와 시간은 델파이의 그것들에 비하면 좀 특이하다. 델파이의 날짜와 시간은 모두 double인데 .네트의 DataTime은 구조체이며 이거로는 제어를 충분히 할 수 없어서 TimeSpan이라는 구조체도 같이 써야 한다. DateTime은 시점이고 TimeSpan은 길이다. double에 비해 구조체의 용량이 더 크고 작동에도 부하가 크겠지만 그 차이가 얼마나 될지는 모르겠다. .네트의 구조체는 인스턴스가 만들어진 때 그 크기가 특정되지 않으므로…

  • c# 멀티뜨레드 문제들, 뜨레드 안전성, 크로스-뜨레드, 데이터 레이스

    멀티뜨레드는 동시에 이루어지는 작업들이다. 하나의 객체에 담겨 있는 데이터를 여러 뜨레드들에서 동시에 읽는 거는 문제될 게 없는데 동시에 쓰려고 하면 문제가 될 수 있다. 한 뜨레드에서 데이터를 쓰는 작업을 ‘마치기’ 전에 다른 뜨레드에서 기록을 한다면 이들은 서로 충돌할 수 있기 때문이다. 이런 문제는 세 가지 형태로 나타난다. 뜨레드 안전성 아래의 예제는 하나의 DataTable 셀에 객체를…