[proj3] OpenMP 사용 The schedule clause static [, chunk] thread에 "chunk" 크기의 블록의 iteration을 라운드 로빈 방식으로 분배 "chunk"가 없으면 각 스레드는 대략적으로 실행됨. N/P개의 chunk N: 길이, P: thread dynamic [, chunk] 고정된 작업의 부분, 사이즈는 chunk의 값에 의해 결정됨 스레드가 종료될 때, 작업의 다음 부분에서 시작함
C++ 간단 정리 #include 헤더파일에 .h 생략 std::cout과 > 출력과 마찬가지로 포맷 지정하지 않아도 됨 지역 변수 선언 아무데서나 가능 특히! for 문 내에서 변수 선언 가능 함수 오버로딩: 동일한 이름의 함수 + 다른 매개변수 동일한 이름의 함수 + 동일한 매개변수 + 다른 반환형은 안됨 함수 매개변수의 default값 설정 가능 inline 함수 프로그램 코드라인 안으로 들어가버린 함수 C의 매크로 함수: 일반 함수에 비해서 실행 속도가 빠르지만, 정의하기가 힘듦 전처리기에 의해 처리 자료형에 의존적이지 않음 매크로 함수의 장점을 유지하고 단점을 제거하자! --> C++의 inline 함수 inline int add(int x, y) {return x+y;} 컴파일러에 의해 처리 컴파일러가 함수의 ..
[lec5-2] C++ Multithreaded Programming Threads Library std::thread in thread(func, args ...) func은 thread에서 호출될 함수 func이 return될 때, thread도 종료 func으로 넘어가는 파라미터는 pass by value로 넘어감 pass by reference로 넘기고 싶으면, std::ref 사용 join() detach(): thread가 non-joinable하게 변해 안전하게 종료시킬 수 있음 parent thread는 join()과 detach()를 사용해야함 std::mutex in
[lec5] Pthread Programming Thread란? OS에 의해 동시적으로 실행되는 instructions의 독립적인 흐름 MultiThread Program 메인 프로그램이 여러 개의 쓰레드를 가지는 경우 Process와 Thread Thread는 프로세스의 리소스를 공유한다. 한 스레드의 변화는 다른 스레드에 영향을 미침. 같은 값을 가리키는 두 개의 포인터가 존재할 수 있음. 같은 메모리 위치에 읽고 쓰는 것은 가능하지만 synchronization이 요구됨 프로세스는 리소스를 공유하지 않음! Thread의 특징 프로세스 내에 존재하며, 프로세스의 리소스를 공유함 독립적인 제어 흐름을 가짐 독립적으로 스케줄화될 수 있어야하는 리소스만 복제 가능 다른 스레드와 프로세스 리소스를 공유함 프로세스가 죽으면 죽음 프로세스 생성을 통해 ove..
썸네일 [pj2] Java Concurrency Utilities 1. BlockingQueue BlockingQueue java.util.concurrent.BlockingQueue에 있는 interface 큐로 elements를 넣거나 뺄 때 스레드들을 blocking할 수 있음 큐에 자리가 없는데 값을 넣으려고 할 때 자리가 생길 때까지 그 스레드를 blocking할 수 있음 보통 producer/consumer를 다루는데 사용됨 producer 스레드는 새로운 객체를 만들고, BlockingQueue에다 넣음. 큐가 가득차면, producer 스레드는 block됨. consumer 스레드에서 객체를 빼가서 큐에 자리가 생길때까지 block! consumer 스레드는 BlockingQueue에서 객체를 빼감 큐가 비었는데 객체를 빼려고 하면, consumer 스레..