일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SpinLock
- 게임개발
- ARface
- list
- 뮤텍스
- 동기화
- 포톤
- Unity
- StartActivityForResult
- semaphore
- 스핀락
- 지크슈
- mutex
- Java
- 유니티
- registerForActivityResult
- 세마포
- Vector
- 광유다
- photon
- 안드로이드스튜디오
- 바이너리세마포
- map
- unityAR
- 유니티슈팅게임
- dependencyResilutionManagement
- C++
- NotFoundException: String resource ID #0x0
- unorderedset
- unorderedmap
- Today
- Total
목록개발 (72)
와와
C++의 멀티스레딩 1. 프로세스와 스레드 프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립된 메모리 공간을 가집니다.반면 스레드는 프로세스 내에서 실행되는 작업의 단위로, 같은 프로세스 내의 스레드들은 메모리를 공유한다. 2. 왜 멀티스레드 프로그래밍을 할까?병렬화 가능한 작업: 예를 들어, 1부터 10000까지의 합을 계산할 때, 이를 여러 스레드로 나누어 계산하면 더 빠르게 결과를 얻을 수 있다.대기 시간이 긴 작업: 네트워크 요청과 같이 대기 시간이 긴 작업을 별도의 스레드에서 처리하면, 메인 스레드가 블로킹되지 않고 다른 작업을 계속할 수 있다. 3. C++에서 스레드 생성하기C++11 부터 표준 라이브러리에 thread가 추가되어 쉽게 스레드를 생성할 수 있다.#include..
함수 객체 Callable ()를 붙여서 호출할 수 있는 모든 것 Std::function 모든 Callable들을 보관할 수 있는 객체#include #include #include int some_func1(const std::string& a) { std::cout f1 = some_func1; std::function f2 = S(); std::function f3 = []() { std::cout std::function 이름 = Callable; 와 같은 형태로 템플릿 인자로 전달 받을 함수의 타입을 가진다. 멤버 함수를 가지는 std::function 멤버 함수를 호출할 때, 구현 상 자신을 호출한 객체를 인자로 암묵적으로 받고 있다.따라서 아래와 같은 코드를 실행하면 에러가 날..
https://modoocode.com/229" data-og-description="모두의 코드 씹어먹는 C ++ - 작성일 : 2018-09-18 이 글은 57754 번 읽혔습니다. 이번 강좌에서는 C++ 의 RAII 패턴unique_ptr안녕하세요 여러분! 지난번 강좌에서 다" data-og-host="modoocode.com" data-og-source-url="https://modoocode.com/229" data-og-url="https://modoocode.com/229" data-og-image=""> 씹어먹는 C ++ - 모두의 코드 씹어먹는 C ++ - 작성일 : 2018-09-18 이 글은 57754 번 읽혔습니다. 이번 강좌에서는 C++ 의 RAII 패턴unique_ptr안녕하..
https://modoocode.com/227" data-og-description="모두의 코드 씹어먹는 C++ - 작성일 : 2018-03-24 이 글은 72589 번 읽혔습니다. 이번 강좌에서는 복사 생략 (Copy elision)우측값 레퍼런스 (rvalue referen ce)이동 생성" data-og-host="modoocode.com" data-og-source-url="https://modoocode.com/227" data-og-url="https://modoocode.com/227" data-og-image="https://scrap.kakaocdn.net/dn/cR7dI7/hyW6JsnR9N/1UrecfkRaFzdxOpciChTH0/img.png?width=670&height=287..
C++에서의 예외 처리 예외 발생시키기 - throwC++ 에서는 throw를 통해 예외가 발생하였다는 것을 명시적으로 나타낼 수 있다. 위과 같이 throw 로 예외로 전달하고 싶은 객체를 써주면 된다.C++ 표준에는 out_of_range, overflow_error, length_error, runtime_error 등등 여러가지가 정의되어 있고 표준 라이브러리에서 활용한다. 예외를 throw 하게 되면, throw 한 위치에서 즉시 함수가 종료되고, 예외 처리하는 부분까지 점프하게 된다. 따라서 throw 밑에 있는 모든 문장은 실행되지 않는다. 한 가지 중요한 점은예외 throw -> 즉시 함수 종료 -> 예외 처리하는 부분까지 점프 (catch) 의 과정을 거치므로 throw 밑에 있는 모든 ..
10-1. C++ STL - 벡터(std::vector), 리스트(list), 데크(deque) C++ 템플릿 라이브러리(STL)를 일컫는다면 다음과 같은 세 개의 라이브러리들을 의미한다.임의 타입의 객체를 보관할 수 있는 컨테이너 (container)컨테이너에 보관된 원소에 접근할 수 있는 반복자 (iterator)반복자들을 가지고 일련의 작업을 수행하는 알고리즘 (algorithm) 컨테이너시퀀스 컨테이너: 배열 처럼 객체들을 순차적으로 보관 (vector, list, deque)연관 컨테이너: 키를 바탕으로 대응되는 값을 찾아줌 시간 복잡도 (빅오 표기) 벡터임의의 위치 원소 접근 ([], at) : O(1)O(1)맨 뒤에 원소 추가 및 제거 (push_back/pop_back) : amorti..
9-1. 코드를 찍어내는 틀 - C++ 템플릿(template) C++ 템플릿 (template)class Vector { std::string* data; int capacity; int length; public: // 생성자 Vector(int n = 1) : data(new std::string[n]), capacity(n), length(0) {} // 맨 뒤에 새로운 원소를 추가한다. void push_back(std::string s) { if (capacity 과 같이 String 데이터를 저장하는 Vector 클래스가 있다.String 말고도 int, char 등의 데이터를 저장하는데도 쓰고 싶다면 템플릿을 사용하면 됨.T 라는 타입의 객체들을 보관하는 Vector 클..
더보기// https://modoocode.com/135 를 통해 매주 조금씩 C++를 공부하며 흔적남기기1-1. 자~ C++의 세계로1-2. 첫 C++ 프로그램 분석하기- iostream 헤더파일을 포함하여 std::count, std::endl와 같은 표준 입출력 객체를 사용할 수 있다.표준 입출력 라이브러리 iostream은 스트림 기반 입출력 기능을 제공함- using namespace std;를 통해 std::를 생략할 수 있지만, 권장하지 않음문제 1문제 2himy name is Psi 라고 출력될 것이다.1-3. C++은 C친구 - C와 공통점- Google의 https://google.github.io/styleguide/cppguide.html#Variable_Names2. C++ 참조자..
객체 지향의 사실과 오해: 역할, 책임, 협력 관점에서 본 객체지향 조영호 지음 0. 서문 객체지향으로 향하는 네 단계의 걸음 첫 걸음, 클래스가 아니라 객체를 바라보는 것두 번째 걸음, 객체를 독립적 존재 보다는 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것세 번째 걸음, 객체들에게 적절한 역할과 책임을 부여하는 것네 번쨰 걸음, 위 세가지를 언어라는 틀에 담아내는 기술을 익히는 것 작가님의 말에 의하면, 이 책의 목적은 객체지향의 첫 걸음에서 마지막 걸음까지 내디딜 수 있도록 도움을 주는 것이다.이 책을 읽기 전인 나는 현재 객체지향을 독립된 객체들이 각각의 기능을 하고, 그들의 상호작용으로 무언가를 구현하도록 하는 것... 으로 막연하게 생각하고 있다. 당장 눈 앞의 구현을 위해 코드만..
테이블이 한 개만 있는 식당이 있다고 가정해보자! 식당에 여러 손님이 동시에 들어와 한 테이블에 앉으려고 하면 굉장한 혼란이 발생할 것이다. 여기서 벌어질 수 있는 혼란 중의 하나로, 경쟁 조건( race condition )을 뽑을 수 있다. 경쟁 조건은 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 의미한다. 그럼 경쟁 조건을 막기 위해선 어떻게 해야할까? 아주 간단하다. 하나의 스레드의 진입만 허용하고 그동안 다른 스레드의 진입을 금지하면 된다. 이것을 상호배제( mutual exclusion )라고 한다. 완벽한 동기화를 위해 상호 배제를 위한 방법 3가지를 알아보도록 하겠다! 식당 비유를 다시 생각해보자면 완벽한 동기화를 위해서..