«thread-safety» 태그된 질문

코드 조각은 여러 스레드에서이 코드를 일관되게 실행할 수있는 방식으로 데이터 구조를 조작하는 경우에만 스레드로부터 안전합니다. 코드는 스레드 안전, 조건부 안전 (상호 배제 필요) 또는 안전하지 않을 수 있습니다 (하나의 스레드에서만 안전하게 사용할 수 있음).

16
수집이 수정되었습니다. 열거 작업이 실행되지 않을 수 있습니다
디버거를 연결할 때 발생하지 않기 때문에이 오류의 맨 아래에 도달 할 수 없습니다. 아래는 코드입니다. 이것은 Windows 서비스의 WCF 서버입니다. NotifySubscribers 메소드는 데이터 이벤트가있을 때마다 (임의의 간격으로, 하루에 800 번 정도) 서비스에 의해 호출됩니다. Windows Forms 클라이언트가 구독하면 구독자 ID가 구독자 사전에 추가되고 클라이언트가 구독을 취소하면 사전에서 삭제됩니다. 클라이언트가 구독을 …


8
잠금은 정확히 어떻게 작동합니까?
스레드로부터 안전하지 않은 객체를 사용하려면 다음과 같이 잠금으로 코드를 래핑합니다. private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } 따라서 여러 스레드가 동일한 코드에 액세스하면 어떻게됩니까 (ASP.NET 웹 응용 프로그램에서 실행되고 있다고 가정합니다). 그들은 대기열에 있습니까? 그렇다면 얼마나 오래 기다 립니까? 잠금 사용으로 …

3
RxJava 스케줄러의 사용 사례
RxJava에는 5 가지 스케줄러 가 있습니다 : instant () : 현재 스레드에서 즉시 작업을 실행하는 스케줄러를 만들고 반환합니다. trampoline () : 현재 작업이 완료된 후 실행될 현재 스레드에서 작업을 대기시키는 스케줄러를 작성하고 리턴합니다. newThread () : 작업 단위마다 새 스레드를 작성하는 스케줄러를 작성하고 리턴합니다. calculation () : 계산 작업을위한 스케줄러를 …

7
재진입 기능은 정확히 무엇입니까?
대부분 의 시간은 , 재입국의 정의에서 인용 위키 백과 : 컴퓨터 프로그램 또는 루틴은 이전 호출이 완료되기 전에 다시 안전하게 호출 될 수있는 경우 (즉, 동시에 안전하게 실행될 수있는 경우) 재진입 자로 설명됩니다 . 재진입, 컴퓨터 프로그램 또는 루틴 : 정적 (또는 전역) 비 일관 데이터를 보유하지 않아야합니다. 고정 된 …

11
객체 또는 메소드의 Java 동기화 메소드 잠금?
같은 클래스에 2 개의 동기화 된 메소드가 있지만 각각 다른 변수에 액세스하는 경우 2 개의 스레드가 2 개의 메소드에 동시에 액세스 할 수 있습니까? 잠금이 객체에서 발생합니까? 아니면 동기화 된 메소드 내의 변수만큼 구체적입니까? 예: class X { private int a; private int b; public synchronized void addA(){ a++; } …

7
Queue.Queue vs. collections.deque
여러 스레드가 물건을 넣을 수 있고 여러 스레드가 읽을 수있는 대기열이 필요합니다. 파이썬에는 적어도 두 개의 큐 클래스 인 Queue.Queue와 collections.deque가 있으며, 전자는 후자를 내부적으로 사용합니다. 둘 다 설명서에서 스레드 안전하다고 주장합니다. 그러나 큐 문서에는 다음과 같은 상태가 있습니다. collections.deque는 잠금이 필요없는 빠른 원자 append () 및 popleft () 작업을 …

9
InvokeRequired 코드 패턴 자동화
이벤트 중심 GUI 코드에서 다음 코드 패턴을 얼마나 자주 작성해야하는지 알고 있습니다. private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; object2.Visible = false; } 된다 : private void DoGUISwitch() { if (object1.InvokeRequired) { object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); })); } else { object1.Visible …

4
메소드를 스레드로부터 안전하게 만드는 것은 무엇입니까? 규칙은 무엇입니까?
메소드를 스레드로부터 안전하게 만드는 것에 대한 전반적인 규칙 / 지침이 있습니까? 일회성 상황이 백만 건일 수 있지만 일반적으로 어떻습니까? 이것이 간단합니까? 메소드가 로컬 변수에만 액세스하는 경우 스레드 안전합니다. 그게 다야? 정적 메소드에도 적용됩니까? @Cybis가 제공 한 한 가지 대답은 다음과 같습니다. 각 스레드는 자체 스택을 가져 오기 때문에 스레드간에 로컬 …
156 c#  thread-safety 

5
ConcurrentHashMap 값을 반복해도 스레드가 안전합니까?
ConcurrentHashMap 에 대한 javadoc 에서 다음은 다음과 같습니다. 검색 작업 (get 포함)은 일반적으로 차단되지 않으므로 업데이트 작업 (put 및 remove 포함)과 겹칠 수 있습니다. 검색은 가장 최근에 완료된 업데이트 작업의 결과를 반영합니다. putAll 및 clear와 같은 집계 작업의 경우 동시 검색에 일부 항목의 삽입 또는 제거가 반영 될 수 있습니다. …

5
.NET Framework에서 동시 HashSet <T>?
다음 수업이 있습니다. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } 다른 스레드에서 "데이터"필드를 변경해야하므로 현재 스레드 안전 구현에 대한 의견이 필요합니다. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) Data.Remove(Val); } } 현장으로 직접 이동하여 여러 …

5
C # Thread safe fast (est) 카운터
최상의 성능으로 C #에서 스레드 안전 카운터를 얻는 방법은 무엇입니까? 이것은 얻는 것처럼 간단합니다. public static long GetNextValue() { long result; lock (LOCK) { result = COUNTER++; } return result; } 그러나 더 빠른 대안이 있습니까?

5
정적 클래스 변수를 수정하지 않으면 동기화되지 않은 정적 메소드가 스레드 안전합니까?
난 당신이하는 정적 방법이 있다면 궁금 하지 동기화를하지만 않습니다 하지 정적 변수를 수정할 수는 스레드 안전? 메소드가 그 안에 로컬 변수를 작성하면 어떨까요? 예를 들어 다음 코드는 스레드로부터 안전합니까? public static String[] makeStringArray( String a, String b ){ return new String[]{ a, b }; } 따라서 두 개의 스레드가 연속적으로 …

8
! = 점검 스레드는 안전한가요?
복합 작업 i++은 여러 작업 을 포함하므로 스레드 안전하지 않다는 것을 알고 있습니다. 그러나 참조 자체를 스레드 안전 작동으로 확인합니까? a != a //is this thread-safe 이것을 프로그래밍하고 여러 스레드를 사용하려고했지만 실패하지 않았습니다. 내 컴퓨터에서 레이스를 시뮬레이션 할 수 없었습니다. 편집하다: public class TestThreadSafety { private Object a = new …

4
모델 빈에서 Gson 인스턴스를 정적 ​​필드로 사용하는 것이 괜찮습니까 (재사용)?
내가 구현 한 모델은 다음과 같습니다. public class LoginSession { private static final Gson gson = new Gson(); private String id; private String name; private long timestamp; public LoginSession(String id, String name) { this.id = id; this.name = name; this.timestamp = System.currentTimeMillis(); } public String toJson() { return gson.toJson(this); } …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.