본문 바로가기

스레드

(4)
[운영체제 이론] 스레드(Thread) 1. 스레드(Thread)의 개념스레드란 프로그램(프로세스) 실행의 단위이며 하나의 프로세스는 여러개의 스레드로 구성이 가능하다.하나의 프로세스를 구성하는 스레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며 실행상태가 변할때마다 스레드 문맥교환(context switching)을 수행한다.각 Thread별로 자신만의 스택과 레지스터를 가진다.한순간에 하나의 스레드만이 실행 가능하다.(인텔 CPU의 스레드 개념과는 차이가 있다) 2. 스레드(Thread)의 장점스레드는 프로세스보다 생성 및 종료시간, 스레드간 전환시간이 짧다.스레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호간에 통신이 가능하다.
[JAVA 자바] synchronized - 스레드 동기화 자바 프로그래밍을 할 때 멀티 스레딩을 하면 각각의 스레드는 독립적으로 동작한다. 하지만 실제 프로그래밍을 할 때에는 스레드들이 연관 관계를 가지면서 작동해야하는 경우가 많다. 예를들어 스레드들이 현재 접속중인 유저수를 공유해야 하는 경우나 은행에서 예금이나 출금을 하는 경우가 있다. 운영체제에서 배웟듯이 이런 변수들은 동시에 접근하게 되면 문제가 발생하게 된다. 예를들어 3개의 스레드가 동시에 예금을 500원식하면 1500원이 되어야 하는데 모두 0원을 가져와 500을 더해서 저장을하면 500원이 저장되게 된다. 이런 문제를 해결하기 위해서는 동기화를 하여야 한다. 자바에서는 스레드를 동기화 하기 위해서 synchronized를 제공한다. 스레드는 synchronized 메소드에 들어가기 위해 lock..
[JAVA 자바] Thread(쓰레드, 스레드) 자바에서 쓰레드(Thread)를 사용하는 방법은 2가지가 있다. 1. Thread를 직접상속 받아 사용하는 방법.2. Runnable 인터페이스를 구현하는 방법. 두 가지 모두 알아보겠지만 자바에서는 다중 상속이 불가능하기 때문에 1번 방법을 사용하면 다른 클래스를 상속받을 수 없다.따라서 왠만하면 2번 방법을 추천한다. 1. Thread를 직접상속 받아 사용하는 방법.쓰레드public class MyExtendThread extends Thread { public void run() { //구현 System.out.println("Thread1"); } } 메인public class JavaTestMain { public static void main(String[] args) { Thread t = ..
[C++] Thread(쓰레드, 스레드) 쓰레드(thread)는 라이브러리에 정의되어있다. 쓰레드(thread)란 프로세스내에서 실행되는 실행 단위이다. 주로 프로그램에는 하나의 스레드로 구성되는데 프로그램은 여러개의 스레드를 가질 수 있다. 이러한 방식을 멀티스레드 라고 한다. 멀티스레드를 실행하면 각 스레드들은 일정시간동안 번갈아가면서 실행된다. 예를들어 1을 1000번 출력하는 스레드 T1과 0을 1000번 출력하는 스레드 T2가 있다고할 때 1이 1000번 출력되고 0이 1000번 수행되는 것이 아니라 1과 0이 번갈아가면서 실행된다(정확히 101010...이 출력되지는 않고 실행할때 마다 조금식 다르게 출력된다.) C++에서 스레드는 아래와 같이 사용한다.thread(함수);#include #include using namesapce ..