1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // thread example #include <iostream> // std::cout #include <thread> // std::thread void foo() { // do stuff... } void bar(int x) { // do stuff... } int main() { std::thread first (foo); // spawn new thread that calls foo() std::thread second (bar,0); // spawn new thread that calls bar(0) std::cout << "main, foo and bar now execute concurrently...\n"; // synchronize threads: first.join(); // pauses until first finishes second.join(); // pauses until second finishes std::cout << "foo and bar completed.\n"; return 0; } | cs |
이런 스레드 예제가 있는데 여기서 join 메소드를 사용하면 첫번째 스레드가 다 돌때까지 기다리는거잖아
그리고 첫번째 스레드가 다 끝나야 2번째 스레드가 돌아가는거같은데 이러면 스레드 쓰는 의미가 없지않음?
내가 이해를 잘못하고있는거임? 좆고수행님들 설명 부탁드림
끝나는걸기다리라는거지차례대로돌리란예긴아니져
왜 start()가 없나 해서 찾아보니까 생성자가 호출될때 스레드가 시작되는 방식이네.
음 그건 그런데 테스트해보면 fisrt second 처음에 같이 잠깐 돌다가 first만 끝날때까지 혼자 돌아간 다음에 second 돌아감
내가 생각하는 스레드는 진짜 걍 서로 다른 스레드에서 같이 번갈아가면서 처리되는걸 생각했는데 이건 왜 이렇게 되는거지
그 순서는 정해져 있지 않아. 스레드 스케줄링은 os에서 하거든.
오 루프를 크게 돌리니까 번갈아가면서 출력하네
컴구 공부 ㄱㄱㄱ