본문 바로가기

전체 글

(132)
쓰레드 3 쓰레드의 동기화쓰레드 동기화(Thread Synchronization)는 여러 개의 쓰레드가 공유 자원에 동시에 접근할 때 발생할 수 있는 문제를 방지하는 기법입니다. 이를 통해 데이터의 일관성을 유지하고, 예상치 못한 동작을 방지할 수 있다. 임계 영역(critical section)여러 쓰레드들중 동시 접근하였을때 오직 한 쓰레드만을 허용해주는 기법. 임계 영역을 보호하는 방법1) 뮤텍스(Mutex)한 번에 하나의 스레드만 접근 가능하도록 잠금(lock) 기능을 제공.2) 세마포어(Semaphore)여러 개의 스레드가 접근할 수 있지만, 최대 허용 개수를 제한.3) 모니터(Monitor) 및 락(Lock)특정 코드 블록을 보호하여 한 번에 하나의 스레드만 실행되도록 함. 임계 영역의 조건1) 상호 배..
쓰레드 1 쓰레드란?프로세스란 운영체제(OS)가 메모리에 올려 사용중인 프로그램을 말한다. 이 프로세스에서도 프로그램이 흘러갈수 있게 로직의 흐름이 필요한데 이것을 쓰레드라 한다. 프로세스는 하나의 쓰레드만 갖을수도 여러개의 쓰레드를 갖을수도 있다. 싱글 쓰레드 프로그램, 멀티 쓰레드 프로그램이라 한다. 멀티쓰레드를 쓰는이유?게임(프로세스)안에서도 음악이 나오면서 공격이펙트를 보여준다거나 캐릭터가 걸어가는 모습을 랜더링하면서 백단으로는 데이터를 갖고 오거나 한번에 동시에 일을 병렬처리할때 사용된다. Java 쓰레드의 사용법자바에서는 쓰레드를 사용할때 Thread 클레스를 상속받거나 Runable인터페이스를 구현하여 사용한다. package study;public class MyThreadTest { publi..
유니티 insideUnitSphere, insideUnitCircle를 사용한 몬스터 스폰 코드 insideUnitSphere와 insideUnitCircle는 모두 무작위한 점을 생성하는 Unity의 Random 클래스의 함수지만, 생성되는 공간이 다름.Random.insideUnitSphere3D 공간에서 단위 구(반지름 1인 구) 내부의 임의의 점을 반환한다.반환값은 (x, y, z) 형태의 Vector3.Vector3 randomPoint = Random.insideUnitSphere; 게임에서 입자 시스템(particle system)이나 랜덤한 3D 위치 설정에 활용할 수 있다. Random.insideUnitCircle2D 공간에서 단위 원(반지름 1인 원) 내부의 임의의 점을 반환한다.반환값은 (x, y) 형태의 Vector2Vector2 randomPoint = Random.insi..
#03 유니티 InputManager 아래는 인풋매너저를 적용한 코드이다. InputManager.csusing System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class InputManager{ public Action KeyAction = null; public void OnUpdate() { if (Input.anyKey == false) return; if (KeyAction != null) KeyAction.Invoke(); }} Managers.csusing System.Collections;using System.Collections..
#02 유니티 플레이어 이동 키의 입력은 받는 Input.GetKey를 이용 하여 플레이어의 이동을 조작할수 있다. transform.position = 백터값 입력을 하면 플레이어의 포지션을 이동 할 수 있다.Vector3( x 좌표, y좌표, z좌표) 를 이용하여 아래 코드와 같이 이동 로직을 구현 할 수있다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerController : MonoBehaviour{ void Start() { } // GameObject (Player) // Transform // PlayerController (*) v..
#01 유니티 게임 오브잭트 코드로 가져오기(Find, AddComponent, DontDestroyOnLoad) GameObject.Find("오브잭트 이름"); 으로 유니티 게임내 오브잭트를 가져올 수 있다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class Player : MonoBehaviour{ // Start is called before the first frame update void Start() { // 게임오브잭트를 이름을 찾는거 자체가 부하가 심하다. /*GameObject go = GameObject.Find("@Managers"); Managers mg = go.GetComponent();*/ // 해결책: 싱글톤을 적용..
GIT 명령어 * 용어정리 origin : 원격저장소의 이름 HAED : 현재 체크아웃된 브런치 또는 커밋을 가리키는 포인터다. * 기본 설정 변경 - 병합(Merge) 방식 설정 git config pull.rebase false - 재정렬(Rebase) 방식 설정 git config pull.rebase true - Fast-Forward만 허용(Fast-Forward Only): 로컬 브랜치가 원격 브랜치보다 뒤처져 있으면 가져오지만, 이력이 다를 경우 동작하지 않는다 git config pull.ff only % 설정을 전역으로 적용하려면 --global 옵션을 추가 git config --global pull.rebase false * 커밋 생성 - 새 git 저장소 생성 git init을 실행하면 해당 디렉..
#05 자료구조 Queue TestApppublic class TestApp { public static void main(String[] args) { MyQueue q = new MyQueue(); System.out.println("capacity:" + q.capacity()); // 10 최초 10 System.out.println("size:" + q.size()); // 0 q.enqueue(1); q.enqueue(2); q.enqueue(3); q.enqueue(4); q.enqueue(5); q.enqueue(6); q.enqueue(7); q.enqueue(8); ..