어디서 뭐 보는데
thread Threads3 = thread([&](int nParam)
{
for (int i = 20; i < 25; ++i)
{
mtx_lock.lock();
cout << "Thread3 Num : " << i << endl;
mtx_lock.unlock();
}
},4
);
이런애가나옴
근데 람다함수보면 (int nParam) 이거랑 마지막에 ,4
이거 안쓰이는거같은데 맞나? 왜있는거임?
--------------------------------------
글고 lock에관한 질문인데
쓰레드1
{락 / 출력1~10 / 락해제}
쓰레드2
{락 / 출력20~30 / 락해제}
쓰레드3
{락 / 출력30~40 / 락해제}
이렇게 짜여있다고할때
이 락과 락해제라는게
출력1~10 -> 출력20~30 -> 출력 30~40
이렇게되는거임?
아니면
출력 1 -> 20 -> 30 -> 2 -> 21 -> 31 .......
이렇게되는거임?
내가직접해보면 전자인데 예제설명문엔 후자로나와있어서;;
환경에따라다른건가?
(1~10) , (20~30) , (30~40) 뭉치덩이로 출력이 이루어짐
그지? 내가 실행했을때도그렇거든? 이거 예제가잘못된거네그럼확실히
후자가 맞다. 요샌 cpu 성능이 좋아져서 두번째 쓰레드가 만들어지기도 전에 첫 스레드가 할거 다 하고 종료돼서 뭉태기로 출력되는 일이 많은데 성능 후진데서 해보면 섞여나옴