동기화를 원하는 몇개의 메소드가 클래스 안에 있다고 가정하자.
(물론 그것들은 여러개의 스레드에 의해 동시에 사용될 수 없게 하려는 상황이라고 가정한다.)
자바 프로그래머라면 스레드 사용시 메소드 동기화를 위해 단지 다음과 같은 방법을사용 하면 된다는걸 알고 있을것이다.
C#에서는 이와같은 효과를 주기 위해 어떻게 해야 할까.
자바를 먼저 공부했던 나는 C#을 공부하면서 이와같은 의문을 가졌고, 찾은 해결방법은 다음과같다.
방법1. Just wrap the entire content of your method in a lock statement.
(메소드의 전체내용을 lock 문장으로 둘러 싸면 된다)
방법2.
Both are not exactly the same and the second one is more like the
synchronized keyword in Java but in general people use locks in C# as it
gives you more fine grained control.
출처 : http://bytes.com/topic/c-sharp/answers/274531-c-synchronized-methods
(물론 그것들은 여러개의 스레드에 의해 동시에 사용될 수 없게 하려는 상황이라고 가정한다.)
자바 프로그래머라면 스레드 사용시 메소드 동기화를 위해 단지 다음과 같은 방법을사용 하면 된다는걸 알고 있을것이다.
public synchronized void methodName() {...}
C#에서는 이와같은 효과를 주기 위해 어떻게 해야 할까.
자바를 먼저 공부했던 나는 C#을 공부하면서 이와같은 의문을 가졌고, 찾은 해결방법은 다음과같다.
방법1. Just wrap the entire content of your method in a lock statement.
(메소드의 전체내용을 lock 문장으로 둘러 싸면 된다)
public class MyClass
{
{
public void MyMethod()
{
lock(typeof(MyClass))
{
// 메소드의 내용
//
//
}
}
}
방법2.
[MethodImpl(MethodImplOptions.Synchronized)]
public void MyMethod()
{
public void MyMethod()
{
// Contents of method
}
Both are not exactly the same and the second one is more like the
synchronized keyword in Java but in general people use locks in C# as it
gives you more fine grained control.
출처 : http://bytes.com/topic/c-sharp/answers/274531-c-synchronized-methods
'개발자의 기록 노트 > C#' 카테고리의 다른 글
[C#] C#.net에서의 시리얼통신 기초 (3) | 2017.04.18 |
---|---|
[C#] WPF Thread (2) | 2012.02.28 |
[C#] 닷넷 프레임워크 기반의 소켓 프로그래밍 (0) | 2012.02.28 |
[C#] .NET 이 아닌 native 코드로 작성된 외부 DLL 사용 방법(파라미터의 타입을 알 수 없는 경우) (0) | 2012.02.08 |
[C#] 구조체 (0) | 2011.07.08 |