본문 바로가기
728x90
반응형
SMALL

멀티쓰레드3

쓰레드의 동기화(4) volatile 싱글 코어 프로세서가 장착된 컴퓨터에서는 크게 문제가 없이 실행될 것이다. 그러나 요즘 대부분 멀티코어 프로세서가 장착된 컴퓨터를 사용하기 때문에, 문제가 많아질 수 있다. 왜냐하면 멀티 코어 프로세서에서 코어마다 별도의 캐시를 가지고 있기 때문이다. 코어는 메모리에서 읽어온 값을 캐시에 저장하고 캐시에서 값을 읽어서 작업한다. 다시 같은 값을 읽어올때는 머넞 캐시에 있는지 확인하고 없을 때만 메모리에서 읽어온다. 그러다보니 도중에 메모리에 저장된 변수의 값이 변경되었는데도 캐시에 저장된 값이 갱신되지 않아서 메모리에 저장된 값이 다른 경우가 발생한다. 그래서 변수 stopped의 값이 바뀌었는데도 쓰레드가 멈추지않고 계속 실행된다. 변수에 volatile을 붙이는 대신에 synchron.. 2021. 10. 16.
싱글쓰레드와 멀티쓰레드 main쓰레드 main 메서드 의 코드를 수행하는 쓰레드 예를들어 우리가 main메서드를 실행하면 위가 바로 메인쓰레듣가 쓰레드는 사용자쓰레드와 데몬쓰레드, 두 종류가 있다. 데몬쓰레드 : 간단히 얘기해서 사용자 쓰레드의 보조 역할, 더보기 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다. 메인쓰레드가 종료되면 전체 프로그램이 종료되었지만, 멀티쓰레드 프로그램에서 아직 실행중인 쓰레드가 있다면 프로그램은 종료되지 않는다. 싱글쓰레드와 멀티쓰레드 프로스세의 차이를 보다 깊이 알아보자 하나의 쓰레드로 두개의 작업을 수행을 시켜보자, AAAAABBBBB 한개의 쓰레드가 끝나고 두번째 쓰레드가 시작된다. 그런데 또다른 프로그램은 두개의 쓰레드로 두개의 작업 수행시키면 ABABABABAB 번갈아 가.. 2021. 10. 8.
프로세스와 쓰레드 프로세스와 쓰레드(process & thread) 프로세스 : 실행 중인 프로그램, 자원(메모리, 씨피유)과 쓰레드로 구성-프로그램을 실행하면 OS로 부터 실행에 필요한 자원(메모리)를 할당 받아 프로세스가 된다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드 쓰레드 : 프로스세스 내에서 실제 작업을 수행 더보기 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다, 프로세스 : 쓰레드 = 공장 : 일꾼 그럼 싱글 쓰레드 프로세스(일꾼 한명!) = 자원 + 쓰레드 멀티 쓰레드 프로세스(일꾼 여러명!) = 자원+쓰레드+쓰레드 ... + 쓰레드 멀티쓰레드로 프로그램을 작성하면 여러작업을 나누어서 동시에 수행할 수 있고 보다 작업을 효율적으로 할 수있고, 우리프로그램은 대부분 멀티 쓰레드로.. 2021. 10. 7.
728x90
반응형
LIST