Join()과 lock() 모두에 대해 하나의 스레드가 다른 스레드 다음에 실행할 수 있습니다. 주요 차이점은 무엇입니까?Join()과 Lock() 사이의 근본적인 차이점
1
A
답변
10
잠금은 한 번에 하나의 스레드 만 실행할 수 있도록 보장하는 데 사용되는 모니터입니다.
lock(myobj)
{
// only 1 thread here
}
조인은 스레드가 완료 될 때까지 기다린 후 실행이 계속되기 전에 사용됩니다. 종료에 스레드에 대한
anotherThread.Join();
// execution here only when anotherThread is complete
3
Thread.Join()
기다립니다. Monitor.Enter(obj)
(컴파일러가 lock
문으로 항목을 표현하는 방법) obj
의 객체 잠금을 보유 할 다른 스레드가 없을 때까지 기다립니다.
전자는 스레드 수명을 관리하는 데 사용되며 후자는 동시성을 제어하는 데 사용됩니다.
2
아래 코드에서 두 번째 스레드는 첫 번째 스레드가 종료 될 때까지 기다립니다. 따라서 첫 번째 스레드가 시작되고 두 번째 스레드가 시작되기 전에 완료됩니다. 두 번째 예에서
public void threadExample1()
{
Thread t1=new Thread(fun1);
Thread t2=new Thread(fun2);
t1.Start();
t1.Join();
t2.Start();
}
, 우리가 먼저 시작되는 스레드 모르겠지만, 우리는 것 때문에
lock
public readonly object locker = new object();
public void threadExample2()
{
Thread t1=new Thread(fun1);
Thread t2=new Thread(fun2);
t1.Start();
t2.Start();
}
public void fun1()
{
lock(locker)
{
for (int i = 0; i < 10; i++)
Console.Write("1");
}
}
public void fun2()
{
lock(locker)
{
for (int i = 0; i < 10; i++)
Console.Write("2");
}
}
출력의 시간에 실행됩니다 하나의 스레드 만이 알고 잠금 예를 들면 "11111111112222222222"또는 "22222222221111111111"이고 결합 예는 "11111111112222222222"입니다.
관련 문제
- 1. STREAM_CLIENT_CONNECT와 STREAM_CLIENT_ASYNC_CONNECT 사이의 차이점
- 2. iPhone에서 viewController 사이의 차이점
- 3. $ .getJSON과 $ .get 사이의 차이점
- 4. 집합 중 하나를 바꾼 후 Join과 SelectMany 사이의 동작이 달라진다
- 5. 잠금 (this)과 정적 오브젝트의 잠금 사이의 차이점
- 6. 'any'와 'find'메소드 사이의 Groovy 차이점
- 7. 루프와 재귀 사이의 실제 차이점
- 8. mongoid에서 references_many와 has_many 사이의 차이점
- 9. IE와 FF 사이의 CSS 차이점
- 10. appengine_django BaseModel과 db.Model 사이의 차이점
- 11. 아이폰의 PushViewController와 presentModalViewController 사이의 차이점
- 12. 쿠키와 SharedPreferences 사이의 안드로이드 차이점
- 13. 사용과 필요 사이의 Clojure 차이점
- 14. document.getSelection()과 window.getSelection() 사이의 차이점
- 15. 근본적인 질문
- 16. 게으른 로딩 Javascript 파일과 차이점 사이의 차이점</body>
- 17. OUTER JOIN과 WHERE를 결합하십시오.
- 18. linux 쓰기와 sendfile 사이의 차이점 syscall
- 19. javascript의 functionName()과 functionName.call() 사이의 차이점
- 20. 루비와 C 사이의 SHA 해시 차이점 #
- 21. $ _GET와 $ request-> getParameter() 사이의 차이점
- 22. mvn : assembly와 mvn : package 사이의 차이점
- 23. 캐시/풀/캐시 풀 사이의 지침/차이점
- 24. DataContract 특성과 .net의 Serializable 특성 사이의 차이점
- 25. 크롬과 IEE 사이의 이상한 CSS 차이점
- 26. 근본적인 안드로이드 에뮬레이터 - 오류?
- 27. 3D 근본적인 행렬의 대응
- 28. MySQL - LEFT JOIN과 NOT IN
- 29. 차이점 downcase와 downcase의 차이점! Ruby에서
- 30. Phone 7의 WebService - 근본적인 질문