소수 구하기각각의 소수 판단 로직은 다른 로직에 영향을 끼치지 않으므로, 소수 갯수 구하는 로직은 멀티스레드로 구현하면 좋을 것이다1~MAX_NUMBER까지의 소수 갯수는?틀#include #include int main(){ const int MAX_NUMBER = 1'000'000; // 1~MAX_NUMBER까지의 소수 갯수는? return 0;} 소수 구하기// 소수 구하기// 1과 자기 자신만으로 나뉘면, 그것을 소수라고 함bool IsPrime(int number){ if (number 그리고 그걸 이용해서 갯수 세기// [start ~ end]int CountPrime(int start, int end){ int count = 0; for (int number = start; number ..
Reader-Writer Lock개요대부분의 확률에서는 read 할 경우에는 lock 이 없는것처럼 공유해서 사용하다가,write가 들어가면 상호배타적 특성을 지니는 lock을 적용한다#ifndef LOCK_H#define LOCK_H#include #include using Mutex = std::mutex;using CondVar = std::condition_variable;using UniqueLock = std::unique_lock;using LockGuard = std::lock_guard;/* ------------------------- RW SpinLock------------------------- *//* ------------------------------------------..
TLS 란 무엇인가스레드가 공유하는 영역은heap 영역 (new)데이터 영역 (static 변수)스레드가 개별적으로 잡는 영역은스택 (함수를 위한)TLS (데이터를 위한, 스레드 본인만의 전역 공간)이다.왜 써야할까? 언제 유용할까?공유변수를 한번 확인하고, 개별 스레드에서 요리조리 하는 상황에 유용할 것이다.요리조리할때 매번 공유되는 영역을 확인하기 위해서 lock을 잡기보다는, 캐싱해오는 개념이다네트워크 통신할때 필요한 버퍼가 그 예시이다.코드C++ 11 에서 표준 스펙으로 채택되었다 (keyword - https://en.cppreference.com/w/cpp/keyword/thread_local)thread_local int LThreadId = 0;int main(){ return 0;}스레드..
이전글 [C++] 스레드 경쟁: 스핀락, 슬립락 구현 / 이벤트, condition_variable (https://jiggyjiggy.tistory.com/137)에서, 스레드의 순서를 맞춰주기 위해 queue와 condition variable를 사용했다.하지만 그보다 가벼운 상황일때도 존재한다. produce-consume 상황이 아닌, 단발성 이벤트의 경우가 그러하다. 그럴때, future 객체를 적용하면 좋다. (condition variable 보다 가볍고, C++ 11 표준 스펙)상황#include int Calculate(){ int sum = 0; for (int i = 0; i Calculate 가 오래걸리므로, 단기알바(스레드)를 주자int main(){ int sum = Calcul..
- Total
- Today
- Yesterday
- core c++
- condition variable
- Memory
- generic sort
- 개발 공부 자료
- 연관관계 편의 메서드
- 객체 변조 방어
- S4
- pocu
- S1
- servlet
- Dispatcher Servlet
- generic swap
- 백준
- JPA
- Spring MVC
- tomcat11
- PS
- thread
- 엔티티 설계 주의점
- reader-writer lock
- CPU
- C
- 톰캣11
- OOP
- tree
- 이진탐색
- Java
- sleep lock
- 논문추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |