컴파일러는 저 코드를 만나자마자 t1쓰레드한테 너 일해라고 하잖아? 근데 그거 끝나건 말건 바로 아랫줄 코드 실행시키는게 맞지?
보통 일반적인 코딩은 저 Start()가 다 끝내야지만 다음 코드 읽는게 쳐 정상인게 맞잖아?
쓰레드 클래스의 Start만 개쳐 좆같게 저러는거임?
댓글 23
너 쓰레드가 뭔지 제대로 이해한거 맞지? - dc App
익명(furryparty)2024-09-18 04:10:00
답글
긍까 딱 저 문법만 누가 명쾌하게 맞다 해주는 사람, 책이 하나도 없어서 그래
ㅇㅇ 1(118.235)2024-09-18 04:21:00
답글
일단 아주 쉽게 대충 간략히 다소 과할정도로 생략해서 예를들어줄게. 쓰레드는 노예야. 네 일을 맡길 노예. 노예보고 쌀 수확해오라고 하면 넌 아주 편하게 불로소득을 얻을수 있겠지? 노예가 쌀 수확하는동안 넌 멋진 꽃미남들과 예쁜 누나들이랑 놀수도 있을거야. 이게 쓰레드지. 메인(너)는 딴짓을 해도 워커(쓰레드)는 네가 맡긴 일을 대신해주니 두가지 일을 동시에 할수 있어. 이게 쓰레드의 기본골자야. 여러 일을 동시에 하게 하는거. 내부적으로 운영체제나 하드쪽에 들어가면 컨텍스트 스위칭, 인터럽트 기타 복잡해서 완벽히 일치하진 않아도, 기본적으로 여러일을 나눠서 더빨리라는 개념은 변하지 않지. - dc App
익명(furryparty)2024-09-18 04:34:00
답글
근데 넌 그런 여러업무를 대신해주는 쓰레드를 쓰면서, 어째서 순차적으로 명령이 실행되지 않지?라고 불만을 가지고 있는거잖아? 마치 비싼 노예한테 쌀 수확하라고 해놓고, 본인은 아무 것도 안하고 멍떼리는거처럼. 이럴거면 노예를 안부리고 직접 쌀수확하면될텐데. 네 질문이 그거야. 애초에 쓰레드를 쓰는 이유를 쓰레드는 왜 이러냐고 따지면 안되는거지 - dc App
익명(furryparty)2024-09-18 04:37:00
답글
답변 감사 ㅎㅎ 그니까 쓰레드의 역할이랑 쓰는이유 까지는 확실히 알고 쓰레드 썻을때 문제점까지도 이해가 되. 근데 딱 저 Start()부분이 제일 기초인데 이해가 안되 문법 타령하는것도 그동안 단일쓰레드에서는 위에 코드 순서대로 돌아갔어야 하는데
ㅇㅇ 1(118.235)2024-09-18 04:44:00
답글
쓰레드를 만들고, Work()라는 함수를 배정해줬어. 그럼 Start()로 work()하라고 시키는 그 작업이 끝나건 말건 다음 코드를 컴파일러가 실행시키는 지 여부가 궁금해서
ㅇㅇ 1(118.235)2024-09-18 04:45:00
답글
뒷부분까지 계속 공부중인데 진짜 그동안의 코딩이 부정당하는 것 같은 찝찝함이 계속 있어서 올린거야 답변고맙다
ㅇㅇ 1(118.235)2024-09-18 04:46:00
답글
첫번째. 쓰레드를 굳이 완료까지 기다리고 싶으면 다음 코드줄로 넘어가지 않고, 기다릴수 있어. 이러면 근데 보통은 메인 스레드에서 업무를 처리하게되니 왠만해선 스레드 쓰는 이유가 없어지지. 두번째. 걍 스레드를 동작 시키면 걘 니가 뭘하든 걍 일을 시작하는거야. 니가 다음 명령을 실행하든 안하든 노예놈은 ㅈ도 관심이 없어. 얘가 관심있는건 일이 끝나서 주인님게 곡물을 주러가는거나, 주인님이 됐다 그만 일하고 쉬어라라고 말하는거뿐이야 - dc App
익명(furryparty)2024-09-18 04:52:00
쓰레드의 개념부터 정확히 아는게 좋을거 같음 만약 안다면 문법이라는 말이 등장할수가 없음
익명(59.8)2024-09-18 04:25:00
답글
간단히 말하자면 우리의 프로그램이 여러개 돌아가는것 처럼 보이는건 cpu가 여러 프로세스들한테 일(명령어 집합)을 하는 시간을 부여해줌 피시방마냥 시간끝나면 다른 프로세스한테 다시 일을 시킴 그게 존나게 빨리 돌아가기 때문에 우리가 느낄땐 여러 프로그램이 동시에 실행되고 있다고 착각하는것뿐임 이게 시분할 시스템이라고 하는거고
익명(59.8)2024-09-18 04:30:00
답글
프로세스는 쓰레드를 가질수있는데 이 쓰레드가 실질적으로 일을 하는 주체임 쓰레드가 2개이상이 되면 프로세스가 쓰레드별로 일하는 시간을 나눠줌 너가 일반적인 코딩을 얘기할때 Start()가 끝나야지만 다음 코드를 읽는다는건 일하는 주체가 1개 밖에 없으니까 스위칭이 일어나도 결국 진행사항은 그대로라 그런거고 멀티스레딩이 되면 프로세스가 각 쓰레드별로 시간을 분할해서 0.xx밀리초단위로 일을 할수있게 해줌 그래서 각각 실행되는것처럼 느끼는거임
익명(59.8)2024-09-18 04:35:00
답글
뭔가 근데 쉽게 설명할수가 없노 그냥 모르겠으면 유튜브 멀티스레드봐라 아니면 운영체제를 좀 공부해보든
익명(59.8)2024-09-18 04:36:00
답글
답변 고맙다 위에 대댓 한번만 읽어줘
ㅇㅇ 1(118.235)2024-09-18 04:46:00
답글
ㄱㄷ 그림 그려서 설명해줄게
익명(59.8)2024-09-18 04:47:00
답글
친절하네 고맙다
ㅇㅇ 1(118.235)2024-09-18 04:52:00
저 함수만 특별한게 아님. 쟤 임무는 "다른 스레드에게 t1에 지정된 작업을 하도록 요구"까지고 그걸 했으니 다음 줄로 넘어가는거임.
익명(222.106)2024-09-18 04:47:00
답글
아 하 그렇네
ㅇㅇ 1(118.235)2024-09-18 04:49:00
답글
컴파일러는 걍 ‘t1아 저 작업해’ 시켜놓고 걍 다음줄 읽은거네
그래서 저 스레드 일하는동안 다른 코드 읽는거고 ㄱㅅㄱㅅ 이게 뭐라고 이해가 안됐지
ㅇㅇ 1(118.235)2024-09-18 04:50:00
답글
진짜 개고맙다 ㄱㅅㄱㅅ
ㅇㅇ 1(118.235)2024-09-18 04:51:00
start 시작 -> 다음 코드 진행 -> start 끝나면서 델리게이트 함수 동작 -> t1 사용가능한 쓰레드로 설정
익명(39.7)2024-09-18 04:52:00
답글
그리고 순서가 중요한 매커니즘이면 콜백함수 쓰면됨
익명(39.7)2024-09-18 04:55:00
위에서 다 답했으니 딱히 덧붙일 건 없어보이고, thread 말고 task 쓰셈. 스레드풀에서 스레드 꺼내다가 알아서 작업시키고 작업 완료 통지도 깔끔하게 해줌. - dc App
너 쓰레드가 뭔지 제대로 이해한거 맞지? - dc App
긍까 딱 저 문법만 누가 명쾌하게 맞다 해주는 사람, 책이 하나도 없어서 그래
일단 아주 쉽게 대충 간략히 다소 과할정도로 생략해서 예를들어줄게. 쓰레드는 노예야. 네 일을 맡길 노예. 노예보고 쌀 수확해오라고 하면 넌 아주 편하게 불로소득을 얻을수 있겠지? 노예가 쌀 수확하는동안 넌 멋진 꽃미남들과 예쁜 누나들이랑 놀수도 있을거야. 이게 쓰레드지. 메인(너)는 딴짓을 해도 워커(쓰레드)는 네가 맡긴 일을 대신해주니 두가지 일을 동시에 할수 있어. 이게 쓰레드의 기본골자야. 여러 일을 동시에 하게 하는거. 내부적으로 운영체제나 하드쪽에 들어가면 컨텍스트 스위칭, 인터럽트 기타 복잡해서 완벽히 일치하진 않아도, 기본적으로 여러일을 나눠서 더빨리라는 개념은 변하지 않지. - dc App
근데 넌 그런 여러업무를 대신해주는 쓰레드를 쓰면서, 어째서 순차적으로 명령이 실행되지 않지?라고 불만을 가지고 있는거잖아? 마치 비싼 노예한테 쌀 수확하라고 해놓고, 본인은 아무 것도 안하고 멍떼리는거처럼. 이럴거면 노예를 안부리고 직접 쌀수확하면될텐데. 네 질문이 그거야. 애초에 쓰레드를 쓰는 이유를 쓰레드는 왜 이러냐고 따지면 안되는거지 - dc App
답변 감사 ㅎㅎ 그니까 쓰레드의 역할이랑 쓰는이유 까지는 확실히 알고 쓰레드 썻을때 문제점까지도 이해가 되. 근데 딱 저 Start()부분이 제일 기초인데 이해가 안되 문법 타령하는것도 그동안 단일쓰레드에서는 위에 코드 순서대로 돌아갔어야 하는데
쓰레드를 만들고, Work()라는 함수를 배정해줬어. 그럼 Start()로 work()하라고 시키는 그 작업이 끝나건 말건 다음 코드를 컴파일러가 실행시키는 지 여부가 궁금해서
뒷부분까지 계속 공부중인데 진짜 그동안의 코딩이 부정당하는 것 같은 찝찝함이 계속 있어서 올린거야 답변고맙다
첫번째. 쓰레드를 굳이 완료까지 기다리고 싶으면 다음 코드줄로 넘어가지 않고, 기다릴수 있어. 이러면 근데 보통은 메인 스레드에서 업무를 처리하게되니 왠만해선 스레드 쓰는 이유가 없어지지. 두번째. 걍 스레드를 동작 시키면 걘 니가 뭘하든 걍 일을 시작하는거야. 니가 다음 명령을 실행하든 안하든 노예놈은 ㅈ도 관심이 없어. 얘가 관심있는건 일이 끝나서 주인님게 곡물을 주러가는거나, 주인님이 됐다 그만 일하고 쉬어라라고 말하는거뿐이야 - dc App
쓰레드의 개념부터 정확히 아는게 좋을거 같음 만약 안다면 문법이라는 말이 등장할수가 없음
간단히 말하자면 우리의 프로그램이 여러개 돌아가는것 처럼 보이는건 cpu가 여러 프로세스들한테 일(명령어 집합)을 하는 시간을 부여해줌 피시방마냥 시간끝나면 다른 프로세스한테 다시 일을 시킴 그게 존나게 빨리 돌아가기 때문에 우리가 느낄땐 여러 프로그램이 동시에 실행되고 있다고 착각하는것뿐임 이게 시분할 시스템이라고 하는거고
프로세스는 쓰레드를 가질수있는데 이 쓰레드가 실질적으로 일을 하는 주체임 쓰레드가 2개이상이 되면 프로세스가 쓰레드별로 일하는 시간을 나눠줌 너가 일반적인 코딩을 얘기할때 Start()가 끝나야지만 다음 코드를 읽는다는건 일하는 주체가 1개 밖에 없으니까 스위칭이 일어나도 결국 진행사항은 그대로라 그런거고 멀티스레딩이 되면 프로세스가 각 쓰레드별로 시간을 분할해서 0.xx밀리초단위로 일을 할수있게 해줌 그래서 각각 실행되는것처럼 느끼는거임
뭔가 근데 쉽게 설명할수가 없노 그냥 모르겠으면 유튜브 멀티스레드봐라 아니면 운영체제를 좀 공부해보든
답변 고맙다 위에 대댓 한번만 읽어줘
ㄱㄷ 그림 그려서 설명해줄게
친절하네 고맙다
저 함수만 특별한게 아님. 쟤 임무는 "다른 스레드에게 t1에 지정된 작업을 하도록 요구"까지고 그걸 했으니 다음 줄로 넘어가는거임.
아 하 그렇네
컴파일러는 걍 ‘t1아 저 작업해’ 시켜놓고 걍 다음줄 읽은거네 그래서 저 스레드 일하는동안 다른 코드 읽는거고 ㄱㅅㄱㅅ 이게 뭐라고 이해가 안됐지
진짜 개고맙다 ㄱㅅㄱㅅ
start 시작 -> 다음 코드 진행 -> start 끝나면서 델리게이트 함수 동작 -> t1 사용가능한 쓰레드로 설정
그리고 순서가 중요한 매커니즘이면 콜백함수 쓰면됨
위에서 다 답했으니 딱히 덧붙일 건 없어보이고, thread 말고 task 쓰셈. 스레드풀에서 스레드 꺼내다가 알아서 작업시키고 작업 완료 통지도 깔끔하게 해줌. - dc App
스레드의 문제가 아니라 비동기에 대한 이해가 부족함