| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 환경설정
- 원격 데스크탑
- Split
- MongoDB
- react
- pandas
- 파이썬
- 러스트
- Python
- MySQL 서버 구축
- numpy
- Set
- HashMap
- MySQL
- 구조체
- list
- Sort
- join
- generic
- array
- matplotlib
- Algorithm
- 알고리즘
- 소유권
- in
- 메소드
- 연관 함수
- heap
- Rust
- stack
- Today
- Total
목록Programming Language (146)
미생
요약핵심 차이: tokio::sync::mpsc::unbounded_channel은 async 런타임(태스크/워커)의 작업 대기(wake)를 지원하는 비동기(비차단) 채널입니다. crossbeam_channel::unbounded은 스레드 기반(블로킹) 채널로 고성능의 스레드 간 통신용입니다.왜 둘 다 쓰나: 코드베이스에서 네트워크/비동기 작업은 Tokio 런타임에서 동작하므로 Tokio 채널을 사용하고, 내비게이션 계산처럼 별도 OS 스레드에서 블로킹 방식으로 처리하는 부분은 crossbeam을 사용합니다.비교 (요점)용도:tokio::sync::mpsc::unbounded_channel: async 컨텍스트(비동기 태스크) 내에서 사용. Receiver::recv().await로 await 가능해서 ..
1. crossbeam_channel의 내부 구현crossbeam_channel::unbounded는 내부적으로 lock-free 자료구조를 사용합니다. 여러 스레드/태스크가 동시에 접근해도 원자적(atomic) 연산으로 안전하게 처리됩니다.2. Send + Sync 특성let (net_message_sender, net_message_recver) = crossbeam_channel::unbounded::();net_message_sender는 Send + Sync를 구현하므로 여러 스레드/태스크에서 안전하게 공유 가능net_message_recver는 Send만 구현하지만 (여기선 단일 consumer), 어느 한 스레드에서만 소비하므로 안전3. 코드에서의 사용 패턴// Gateway(비동기 I/O ..
Tokio란?Tokio = 비동기 I/O + 태스크 스케줄러 + 타이머를 제공하는 런타임 라이브러리Rust에서 async/await와 함께 사용되어 비동기 코드를 실행 가능하게 하는 환경을 만들어 줌즉, 단순히 함수나 구조체를 제공하는 라이브러리가 아니라,Future를 실제로 실행하고 스케줄링하는 런타임 역할을 함 Tokio의 구성 요소태스크 스케줄러(Task Scheduler)Future를 스레드 풀에서 실행Cooperative multitasking 방식한 스레드에서 여러 태스크를 효율적으로 처리비동기 I/OTCP/UDP, 파일, 타이머 등 비동기 I/O 지원OS의 epoll(kqueue, IOCP) 등을 기반으로 이벤트 처리타이머 & Delay비동기 sleep, interval, timeout 처리..
1. 인라인 함수1) ODR(One Definition Rule) 완화 → 헤더에 함수를 정의할 수 있게 함이게 사실상 inline의 본래 의미입니다.함수 정의를 헤더 파일에 적어도 된다여러 번 포함되더라도 “복제 오류”가 나지 않도록 조절한다즉, 링커 충돌을 막는 장치.이 특성 덕분에 템플릿 함수는 대부분 inline 형태로 돌아다니죠.2) 컴파일러에게 “이 함수는 인라인해도 괜찮아”라는 힌트단, 명령이 아니라 힌트입니다.컴파일러가 판단해서최적화 레벨함수 크기코드 중복 비용등을 고려한 뒤 인라인할지 말지 결정합니다.2. 인라인 함수의 역할함수 호출을 없애고 코드 본문을 호출 지점에 삽입해도 된다는 권한 제공여기서 “역할”은 다음과 같아요:함수 호출 오버헤드 제거 가능작은 함수의 호출 비용을 없애 성능 ..
using 키워드1. 상속 멤버의 접근 지정자 변경 가능(protected -> public 으로 변경할 때만 사용 가능)#include using namespace std;class character {public: character() : hp(100), power(100) {};protected: int hp; int power;};//character 클래스를 상속 받은 player 클래스class player : public character {public: player() {};};//기본 Monster 클래스class monster {public: monster() {};protected: void get_damage(int _damage) {}; void attack(playe..
폴드 표현식1. C++17 부터 도입된 폴드 표현식(fold expression)은 개수가 정해지지 않은 매개변수를 하나로 묶는 매개변수 팩을 반복해서 계산해 준다. 2. 사용법 (매개변수_팩_이름 연산자 ...)예시) (show_doll(doll_list) + ...)매개변수 팩을 이용한 예시#include using namespace std;// 매개변수 팩을 이용한 가변 인자 템플릿 – 말단 함수용template// 매개변수 팩의 마지막 인자를 연산 하기 위한 함수void find_doll(doll doll_name) { cout // find_dell 함수 오버로딩void find_doll(doll doll_name, dolls... doll_list) { cout 폴드 표현식 예시#inclu..