일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c# websocket
- c# restapi 호출
- c# 업비트
- 북마크
- Chart
- 차트
- C#
- upbit
- WPF
- Prism
- 즐겨찾기
- 업비트 API
- Upbit API
- c# restapi
- c# api호출
- 업비트 c#
- maui
- c# 차트
- c# maui
- 업비트
- c# 라이브 차트
- XAML
- c# 업비트 api키 목록
- 라이브 차트
- 업비트 차트
- 나만의 사이트모음집
- Today
- Total
목록전체 글 (130)
하아찡
안녕하세요.이번에는 condition variable를 알아보겠습니다.이전에 알아봤던 Event에서 CreateEvent를 사용해서 커널단에 이벤트를 등록하는 방식으로 처리를 해봤습니다.해당방식은 다른 프로세스에게도 이벤트를 전달 할 수 있는데, 나는 내 프로그램 내부에서만 처리가능하면 될거같은데 너무 무겁게 작업하는거 아닌가? 라는 생각을 할 수 있습니다.그래서 있는게 condition variable입니다.condition variable는 유저 모드 이벤트를 생성 및 호출을 하게 가능하게 됩니다.사실 유저모드에서 이벤트가 발생하고 처리가 되는건 아닙니다. 실질적으로 이벤트가 발생했을때는 커널모드의 개입이 필요한데 그 외의 작업들이 유저모드에서 처리가 되기때문에 CreateEvent를 사용해서 이벤트..

안녕하세요이번에는 Event처리를 해볼건데요. 이전에 사용했던 코드를 먼저 봅시다.#include "pch.h"#include #include #include class AdaptiveLock {public: void lock() { int32 spinCount = 0; // Spin 횟수 const int32 maxSpinCount = 100; // Spin 횟수 제한 bool expected = false; bool desired = true; while (!_locked.compare_exchange_weak(expected, desired)) { expected = false; ..

이전에는 SpinLock을 살펴보았는데이번에는 SleepLock을 살펴보겠습니다. 사실 SpinLock에 반복문 내부에 "일정시간 대기해라" 코드 한줄만 추가해주면 바로 SleepLock으로 변경하여 사용할 수 있습니다.#include "pch.h"#include #include #include class SleepLock {public: void lock() { bool expected = false; bool desired = true; while (!_locked.compare_exchange_weak(expected, desired)) { expected = false; //기존 SpinLock에서 SleepLock..

atomic은 원자라는 뜻을 가지고있는데원자적인 연산을 한다라고 생각을 하시면됩니다.원자적인 연산이란게 무엇일까? 더이상 쪼개질 틈이 없어 다른 쓰레드가 연산할 틈을 안준다라고 생각하시면 될거같습니다.그래서 atomic은 둘중에 한개입니다. 전부 처리를했다 혹은 처리를 하지못했다 이두가지로 나눠지게 됩니다. 그러면 저게 도대체 무슨소리인가? 코드를 전부처리했다? 처리하지못했다? 이게 뭐가 중요할까요? 둘다 중요합니다. 하지만 여기서 또 봐줘야할점이 "다른 쓰레드가 연산할 틈을 안준다" 이것도 중요하다고 봅니다. 이게 사실 싱글쓰레드에선 별일이 아닙니다. 그저 순서를 지키고 처리가 될뿐인데, 별일이 아닌곳은 바로 멀티쓰레드 환경에서는 매우 중요한 일입니다. 왜? 멀티쓰레드환경에서 중요한일 인가?싱글쓰레..

mutex는 일반적인 상황에서는 사용이 되지않고 멀티 쓰레드를 사용하게 될때 필요합니다. 왜 일반적인 상황에서 사용이 안되는지부터 알아봅시다. 일반적으로 코드를 작성하게되면 변수값은 Main쓰레드 혼자 작업을 하게됩니다. 그러다보니 외부(다른쓰레드)에서 해당 변수값을 변경하는 일이 발생할 수 없기 때문에 사용을 하지않는데 만약에 우리가 다른 쓰레드를 생성해서 동일한 변수를 여러 쓰레드가 동시에 수정하게되면 어떻게 될까요?정말 이상적으로 생각했을땐, "컴퓨터가 동시에 처리한다해도 순서라는게 있으닌깐 값이 정상적으로 변하겠지?" 라고 생각을 하실겁니다. 저도 그랬으닌깐요. 근데 막상 실행을 시켜보고 값을보면 정말 잘 나올 수도 있지만, 원하는 값으로 안 나올 수도 있습니다. 여기서 문제가 발생합니다.코드를 ..
접근제한자는 클래스 변수나 메소드에 대한 접근범위를 제한하는 키워드입니다. 캡슐화의 요소중 하나이죠. 자그러면 접근제한자 종류를 알아보죠크게 Public, Private, Protected가 존재합니다.첫번째 Public 부터 살펴보시죠 public으로 변수나 메소드를 생성했을 경우에는 어디서든 누구든지 사용이 가능한 변수 혹은 메소드 입니다.여기서 누구든지 사용이 가능하다는건 무엇이냐? 바로 코드로 보시죵#include #include class Base {public: std::string str;public: Base() : str("Base") { std::cout 위 코드를 봤을때 main 함수 내부에서 Base클래스를 사용해서 객체를 만듭니다.이 과정에서 클래스를 사용..