728x90
반응형

Multithreading 10

Java의 데몬 스레드

질문 : Java의 데몬 스레드는 무엇입니까? 아무도 Java에 어떤 데몬 스레드가 있는지 말해 줄 수 있습니까? 답변 데몬 스레드는 프로그램이 완료되었지만 스레드가 여전히 실행 중일 때 JVM이 종료되는 것을 방지하지 않는 스레드입니다. 데몬 스레드의 예는 가비지 컬렉션입니다. setDaemon(boolean) 메서드를 사용하여 스레드가 시작되기 전에 Thread 데몬 속성을 변경할 수 있습니다. 출처 : https://stackoverflow.com/questions/2213340/what-is-a-daemon-thread-in-java

Task.Delay를 사용하는 경우, Thread.Sleep을 사용하는 경우

질문 : Task.Delay를 사용하는 경우, Thread.Sleep을 사용하는 경우 Task.Delay 대 Thread.Sleep 을 언제 사용할 지에 대한 좋은 규칙이 있습니까? 구체적으로, 하나가 다른 하나보다 효과적이고 효율적으로 제공 할 수있는 최소값이 있습니까? 마지막으로 Task.Delay는 비동기 / 대기 상태 시스템에서 컨텍스트 전환을 유발하므로 사용하는 오버 헤드가 있습니까? 답변 현재 스레드를 차단 Thread.Sleep 사용하십시오. 현재 스레드를 차단하지 않고 논리적 지연을 원할 때 Task.Delay 사용합니다. 효율성은 이러한 방법에서 가장 중요한 문제가되어서는 안됩니다. 실제 사용되는 주요 용도는 I / O 작업에 대한 재시도 타이머로 밀리 초가 아닌 초 단위입니다. 출처 :..

volatile 키워드는 어디에 사용할 수 있을까?

질문 : volatile 키워드는 무엇에 유용합니까? 오늘 직장 volatile 키워드를 발견했습니다. 익숙하지 않아서이 설명을 찾았습니다. 해당 기사에서 문제의 키워드를 설명하는 세부 정보를 고려할 때 해당 키워드를 사용한 적이 있습니까? 아니면이 키워드를 올바른 방식으로 사용할 수있는 사례를 볼 수 있습니까? 답변 volatile 에는 메모리 가시성을위한 의미가 있습니다. volatile 필드의 값은 쓰기 작업이 완료된 후 모든 판독기 (특히 다른 스레드)에게 표시됩니다. volatile 없으면 독자는 업데이트되지 않은 일부 값을 볼 수 있습니다. 귀하의 질문에 답하기 위해 : 예, 일부 코드가 루프를 계속할지 여부를 제어 volatile 루프는 volatile 값을 true 계속됩니다. 조건은 "중..

파이썬에서 스레딩을 사용하는 방법

질문 : 파이썬에서 스레딩을 어떻게 사용할 수 있습니까? 파이썬에서 스레딩을 이해하려고합니다. 문서와 예제를 살펴 봤지만 솔직히 많은 예제가 지나치게 정교하여 이해하는 데 어려움이 있습니다. 멀티 스레딩을 위해 분할되는 작업을 어떻게 명확하게 표시합니까? 답변 이 질문이 2010 년에 제기 된 이후로 map 및 pool을 사용 하여 Python으로 간단한 멀티 스레딩을 수행하는 방법이 실제로 단순화되었습니다. 아래 코드는 반드시 확인해야하는 기사 / 블로그 게시물에서 발췌 한 것입니다 (제휴 없음)- 한 줄의 병렬 처리 : A Better Model for Day to Day Threading Tasks . 아래에 요약하겠습니다. 코드 몇 줄로 끝납니다. from multiprocessing.dummy ..

Android 플랫폼에서 Service vs IntentService

질문 : Android 플랫폼의 서비스 대 IntentService IntentService 로 수행 할 수 있지만 Service 로는 수행 할 수없는 작업의 예를 찾고 있습니까? 또한 IntentService 는 다른 스레드에서 실행되고 Service 는 실행되지 않는다고 생각합니다. 따라서 내가 볼 수있는 한 자체 스레드 내에서 서비스를 시작하는 것은 IntentService 시작하는 것과 같습니다. 그 맞습니까? 답변 Tejas Lagvankar는이 주제에 대한 멋진 게시물을 작성했습니다. 다음은 Service와 IntentService의 몇 가지 주요 차이점입니다. 언제 사용합니까? 서비스 는 UI가없는 작업에서 사용할 수 있지만 너무 길어서는 안됩니다. 긴 작업을 수행해야하는 경우 서비스 내에서..

파이썬 스레드에서 반환 값을 얻는 방법

질문 : 파이썬 스레드에서 반환 값을 얻는 방법은 무엇입니까? foo 함수 'foo' 문자열을 반환합니다. 스레드의 대상에서 반환되는 'foo' 값을 어떻게 얻을 수 있습니까? from threading import Thread def foo(bar): print('hello {}'.format(bar)) return 'foo' thread = Thread(target=foo, args=('world!',)) thread.start() return_value = thread.join() 위에 표시된 "한 가지 분명한 방법"은 작동하지 않습니다. thread.join() None 반환했습니다. 답변 Python 3.2 이상에서 stdlib concurrent.futures 모듈은 반환 값 또는 예외를 작업..

오류 : The application may be doing too much work on its main thread

질문 : 응용 프로그램이 주 스레드에 너무 많은 작업을 하고 있을 수 있습니다. Android SDK / API 환경이 처음입니다. 플롯 / 차트를 그리는 것은 처음입니다. 3 개의 다른 무료 라이브러리를 사용하여 에뮬레이터에서 다양한 종류의 샘플 코드를 실행 해 보았지만 레이아웃 화면에 아무것도 표시되지 않았습니다. logcat은 다음 메시지를 반복합니다. W/Trace(1378): Unexpected value from nativeGetEnabledTags: 0 I/Choreographer(1378): Skipped 55 frames! The application may be doing too much work on its main thread. 문제는 지속되지 않았고 라이센스 라이브러리의 평가판과 ..

PHP에서 thread safe 또는 on-thread safe

질문 : PHP에서 스레드 안전 또는 비 스레드 안전은 무엇입니까? 비 스레드 또는 스레드 안전과 같은 PHP 용 다른 바이너리를 보셨습니까? 이것은 무엇을 의미 하는가? 이 패키지의 차이점은 무엇입니까? 답변 다른 웹 서버는 들어오는 HTTP 요청을 병렬로 처리하기 위해 다른 기술을 구현합니다. 꽤 널리 사용되는 기술은 스레드를 사용하는 것입니다. 즉, 웹 서버는 들어오는 각 요청에 대해 단일 스레드를 생성 / 전용합니다. Apache HTTP 웹 서버는 요청 처리를위한 여러 모델을 지원하며, 그중 하나 (작업자 MPM이라고 함)는 스레드를 사용합니다. 그러나 프로세스를 사용하는 프리 포크 MPM이라는 또 다른 동시성 모델을 지원합니다. 즉, 웹 서버는 각 요청에 대해 단일 프로세스를 생성 / 전용합니..

C ++ 11은 표준화 된 메모리 모델의 도입이 미치는 영향

질문 : C ++ 11은 표준화 된 메모리 모델을 도입했습니다. 무슨 뜻이에요? 그리고 그것이 C ++ 프로그래밍에 어떤 영향을 미칠까요? C ++ 11은 표준화 된 메모리 모델을 도입했지만 정확히 무엇을 의미합니까? 그리고 그것이 C ++ 프로그래밍에 어떤 영향을 미칠까요? 이 기사 ( Herb Sutter 를 인용 한 Gavin Clarke의 )는 다음과 같이 말합니다. 메모리 모델은 C ++ 코드가 이제 컴파일러를 만든 사람과 실행중인 플랫폼에 관계없이 호출 할 표준화 된 라이브러리를 가지고 있음을 의미합니다. 서로 다른 스레드가 프로세서의 메모리와 통신하는 방식을 제어하는 표준 방법이 있습니다. Sutter 는 "표준에있는 여러 코어로 [코드]를 분할하는 것에 대해 이야기 할 때 메모리 모델에 대..

[Python] 다중 처리 vs 스레딩

질문 : 다중 처리 대 스레딩 Python 스레딩에 비해 다중 처리 의 장점을 이해하려고합니다. 다중 처리 가 Global Interpreter Lock을 우회한다는 것을 알고 있지만 다른 이점이 있으며 스레딩 이 똑같은 일을 할 수 없습니까? 답변 threading 모듈은 스레드를 사용하고 multiprocessing 모듈은 프로세스를 사용합니다. 차이점은 스레드는 동일한 메모리 공간에서 실행되는 반면 프로세스에는 별도의 메모리가 있다는 것입니다. 이로 인해 다중 처리를 사용하여 프로세스간에 개체를 공유하기가 조금 더 어려워집니다. 스레드는 동일한 메모리를 사용하기 때문에 예방 조치를 취해야합니다. 그렇지 않으면 두 개의 스레드가 동시에 동일한 메모리에 기록됩니다. 이것이 글로벌 인터프리터 잠금의 목적..

728x90
반응형