[CS] 식사하는 철학자 C언어로 해결하기
·
cs
※ 이 포스트에서는 메세지 큐을 이용해 문제를 해결하는 방식을 썻고 철학자가 1명인 경우는 제외했습니다. 교착 상태(Dead Lock)와 경합 조건(Race Condition)에 관해 배우는 대표적인 주제인 식사하는 철학자 입니다. 식사하는 철학자 문제를 간단하게 설명드리자면각각의 철학자는 스레드이다.철학자는 스파게티를 먹고 자고 생각하는 루틴을 반드시 지켜야 한다.각각의 철학자는 다른 철학자의 상태를 확인할 수 없다.포크는 철학자 수 만큼 주어지고 각 포크는 철학자 사이에 있다.철학자가 식사할 때는 포크가 반드시 2개가 필요하다.각 철학자는 생명 시간이 있다.철학자는 먹고 자는 루틴에 생명을 담보로한 소요 시간이 있다.자고 난 뒤에는 생명 시간이 연장 된다.만약 하나의 철학자라도 죽었다면 모든 철학자는..
[Unity] 맥에서 스크립트 주석 없애는 법
·
Unity
결론부터 말씀드리자면 제가 스크립트 하나짯는데 이거 사용하시면 됩니다. "버전"이라고 적혀있는 부분만 자신이 사용하고 있는 버전에 맞게 바꿔주세요 sed -i '' -e '8d;14d' /Applications/Unity/Hub/Editor/버전/Unity.app/Contents/Resources/ScriptTemplates/81-C\#\ Script-NewBehaviourScript.cs.txt 맨 처음 유니티 설치하고 스크립트를 만들면 Start와 Update 함수 위에 주석이 달려있는데 매번 스크립트를 만들때마다 나타나서 짜증나죠 지우는 방법이 있습니다 윈도우와 맥 둘다 같은 방법이지만 경로가 다르니 주의해 주세요 C# 스크립트의 기본 파일이 담겨져있는 경로는 저렇게 되어있습니다. Editor 뒤에..
[C#] Extension Method
·
C#
Extension Method란? Extension Method는 정식 라이브러리에서 제공하는 클래스들에 함수를 추가하는 기능을 말합니다. 내가 만든 함수가 print 함수라고 쳤을 때 String 클래스에다가 추가시켜서 String.print(); 이런 느낌으로 사용 가능합니다. 구현하기 구현하기 위한 조건 4가지가 있습니다. static 클래스 static 함수 함수가 추가될 클래스는 첫 인자 추가될 클래스는 this 표시 보시면 함수가 추가될 클래스인 GameObject라 함수 첫 인자로, 첫 인자는 this로 표시해서 구현할 수 있습니다. 2번째 함수인 AddUIEvent함수 첫 줄에 확장한 메소드를 바로 사용하는것을 볼 수 있죠 기존에는 GameObject 클래스 내에 F_GetComponent..
[Unity] 애니메이션 Has Exit Time
·
Unity
애니메이션 컨트롤러에서 Make Transition을 했을 때 현재 애니메이션에서다른 애니메이션으로 방향을 정해줄 수 있습니다. 보면 Run 애니메이션과 Wait애니메이션이 서로를 가리키고 있는데 가리키는 화살표를 눌러보면위 사진처럼 Inspector 창에 Transition에 관한 정보가 나오는데 여기서 Has Exit Time이 뭔지, 무슨 역할을 하는지, 사용 목적은 무엇인지 한번쯤은 의문을 가집니다.  Has Exit Time 정의와 역할Has Exit TimeExit Time 은 파라미터에 의존하지 않고 상태의 정규화된 시간에 의존하는 특별한 전환입니다. Exit Time 에서 지정한 시간에 전환이 발생하도록 확인해야 합니다. 유니티 공식 문서에서 가져온 내용인데 주목할 부분은 "Exit Tim..
[C] strdup, strjoin, split 구현
·
C
stdup의 경우 기존에 C에 있던 함수이기 때문에 많은 분들이 익숙하시겠지만 join과 split의 경우 C언어에 없는 함수이기 때문에 많이 생소하실 겁니다. 다른 언어에서 주로 사용되는 join과 split의 경우 문자열을 이어주고, 특정 문자 기준으로 나누어 주고 해주는 함수이죠 좀 더 자세히 알고 싶으시면 파이썬 join과 split에 대해서 검색해 보시면 됩니다. Strdup#include const char *(const char *s1);함수 내에서 힙메모리에 s1 문자열 크기의 공간을 할당 후 문자열을 복사시키고 반환해주는 함수입니다. #include #include #include const char *my_strdup(const char *s1) { char *ret; int len =..
[C#] Task 와 Thread의 차이점
·
C#
쓰레드 기본 개념 C#는 멀티스레딩을 통해 코드의 병렬 실행을 지원합니다. 스레드는 다른 스레드와 동시에 실행할 수 있는 독립적인 실행 경로를 나타냅니다. 쓰레드 작동 방식 멀티스레딩은 내부적으로 스레드 스케줄러에 의해 관리되며, 일반적으로 CLR (Common Language Runtime)이 운영 체제에 위임하는 기능입니다. 스레드 스케줄러는 모든 활성 스레드에 적절한 실행 시간을 할당하고, 대기하거나 차단된 스레드(예를 들어, 독점 락 또는 사용자 입력을 기다리는 스레드)가 CPU 시간을 소비하지 않도록합니다. 단일 프로세서 컴퓨터에서 스레드 스케줄러는 일반적으로 활성 스레드 간에 실행을 빠르게 전환하는 "타임 슬라이싱"을 수행합니다. Windows에서는 타임 슬라이스가 일반적으로 몇십 밀리초 정도..
[Unity] 유니티 기본 강좌 #03 (키 입력 받기)
·
Unity
이번 시간에는 키 입력 받는 방법에 대해서 배워 봅시다. 일반 적으로 키 입력 받는 방법은 3가지가 있습니다. GetAxis( ) GetButton( ) GetKey( ) 아래 사이트에 간략하게 설명 되어 있으니 참고하시면 좋을것 같습니다. [유니티] 2. 키보드 입력받기 (Input) [유니티] 2. 키보드 입력받기 (Input) 본 내용은 필자가 공부한 내용을 정리한 것으로 틀리거나 잘못된 내용이 있을 수 있습니다. Input을 이용하면 키보드, 마우스를 눌렀을 때 값을 입력받을 수 있습니다. 이번에는 값을 입력받을 수 ariel1910.tistory.com 1. GetAxis( ) float Input.GetAxis(string AxisName); AxisName을 입력받고 값에 따라 -1 ~ 1 ..
[C++] String Compare vs strcmp
·
C++
C++의 String Compare 함수 C의 strcmp 함수 이 두 함수는 문자열을 비교해주는 함수입니다 string compare 의 반환값은 같으면 0 다르면 ascii 코드의 차이값을 반환하고 strcmp 의 반환값은 같으면 0 다르면 1 또는 -1을 반환하게 됩니다. (반환값은 운영체제 별로 다를 수 있습니다) 어찌 되었건 두 함수의 용도는 문자열 비교인데요 그런데 두 함수의 결정적인 차이는 비교하는 자료형에서 차이가 나게 됩니다 #include #include int main() { std::string hello = "hell"; std::string hello1 = "hella!"; std::size_t len = hello1.length(); hello1[len - 1] = '\0'; ..
원피스는 실존하다