«multithreading» 태그된 질문

멀티 스레딩은 여러 동시 실행 스트림 (일반적으로 스레드라고 함)을 활용하여 컴퓨터 또는 프로그램이 동시에 또는 비동기 적으로 작업을 수행 할 수있는 기능입니다.

1
ThreadPool.QueueUserWorkItem 대 Task.Factory.StartNew
아래의 차이점은 무엇입니까 ThreadPool.QueueUserWorkItem vs Task.Factory.StartNew 위의 코드가 장시간 실행되는 작업에 대해 500 번 호출되면 모든 스레드 풀 스레드가 사용된다는 의미입니까? 아니면 TPL (두 번째 옵션)이 프로세서 수보다 적거나 같은 스레드를 차지할만큼 똑똑할까요?

4
Thread가 추상 클래스가 아니고 start ()가 final이 아닌 이유는 무엇입니까?
Thread클래스가 추상 클래스가 아닌 일반 클래스로 구현 된 이유는run() 메서드가 추상 인 문제가 생길 수 있습니까? 아니면 이런 식으로 사용합니까? 또한이 Thread.start()메서드는 다른 클래스에서 기능을 구현할 수없는 매우 구체적인 메서드 여야합니다 (내가 틀리지 않은 경우). 따라서 final키워드가 다른 방법보다 더 적합 할 것이라고 생각합니다 . 하지만이 방법을 재정의하고 원하는대로 사용할 …

9
크로스 스레드 이벤트를 호출하는 가장 깨끗한 방법
.NET 이벤트 모델은 종종 한 스레드에서 이벤트를 발생시키고 다른 스레드에서 수신 대기하는 것과 같습니다. 백그라운드 스레드에서 내 UI 스레드로 이벤트를 마샬링하는 가장 깨끗한 방법이 무엇인지 궁금합니다. 커뮤니티 제안에 따라 다음을 사용했습니다. // earlier in the code mCoolObject.CoolEvent+= new CoolObjectEventHandler(mCoolObject_CoolEvent); // then private void mCoolObject_CoolEvent(object sender, CoolObjectEventArgs args) { if (InvokeRequired) …

7
녹색 스레드 대 비 녹색 스레드
이러한 유형의 스레드가 제공하는 이점을 이해하고 싶습니다. 어떤 환경에서 녹색 스레드가 녹색이 아닌 것보다 낫습니까? 일부는 녹색 스레드가 멀티 코어 프로세서에 더 좋다고 말합니다. 예상되는 모든 동작 문제.

3
std :: hardware_destructive_interference_size 및 std :: hardware_constructive_interference_size 이해
C ++ 17 추가 std::hardware_destructive_interference_size및std::hardware_constructive_interference_size . 첫째, L1 캐시 라인의 크기를 얻는 이식 가능한 방법이라고 생각했지만 이는 지나치게 단순화 된 것입니다. 질문 : 이러한 상수는 L1 캐시 라인 크기와 어떤 관련이 있습니까? 사용 사례를 보여주는 좋은 예가 있습니까? 둘 다 정의됩니다 static constexpr. 바이너리를 빌드하고 캐시 라인 크기가 다른 다른 …

5
ProgressDialog Android 표시
사용자와 searchButton에서 문자열을 가져 오는 EditText가 있습니다. searchButton을 클릭하면 XML 파일을 검색하여 ListView에 표시합니다. 사용자로부터 입력을 받아 XML 파일을 검색하고 ListView에도 usersearched 값을 표시 할 수 있습니다. 내가 원하는 것은 ProgressDialogsearchButton을 "PLEASE WAIT ... RETRIEVING DATA ..."또는 이와 유사한 것과 같이 클릭 한 후 표시 하고 데이터가 표시 될 때 …

9
C #에 대한 더 나은 대기 패턴이 있습니까?
나는 이런 종류의 것을 몇 번 코딩하는 것을 발견했습니다. for (int i = 0; i < 10; i++) { if (Thing.WaitingFor()) { break; } Thread.Sleep(sleep_time); } if(!Thing.WaitingFor()) { throw new ItDidntHappenException(); } 잘못된 코드처럼 보입니다. 더 나은 방법이 있습니까? / 잘못된 디자인의 증상입니까?

6
IO 바인딩 작업에 ThreadPools 또는 Task Parallel Library를 사용해야합니까?
애그리 게이터 인 내 프로젝트 중 하나에서 웹에서 피드, 팟 캐스트 등을 구문 분석합니다. 순차 접근 방식을 사용하는 경우 리소스가 많기 때문에 모든 리소스를 처리하는 데 상당한 시간이 걸립니다 (네트워크 문제 및 이와 유사한 문제로 인해). foreach(feed in feeds) { read_from_web(feed) parse(feed) } 그래서 동시성을 구현하고 싶고 기본적으로 ThreadPools를 사용하여 …

10
ExecutorService를 통해 CompletionService를 언제 사용해야합니까?
방금 이 블로그 게시물 에서 CompletionService를 찾았 습니다 . 그러나 이것은 표준 ExecutorService에 비해 CompletionService의 장점을 실제로 보여주지는 않습니다. 둘 중 하나를 사용하여 동일한 코드를 작성할 수 있습니다. 그렇다면 CompletionService는 언제 유용할까요? 명확하게하기 위해 짧은 코드 샘플을 제공 할 수 있습니까? 예를 들어,이 코드 샘플은 CompletionService가 필요하지 않은 경우 (= …

3
멀티 스레딩 프로그램이 최적화 모드에서 멈췄지만 -O0에서 정상적으로 실행 됨
다음과 같이 간단한 멀티 스레딩 프로그램을 작성했습니다. static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } 그것은 디버그 모드로 정상적으로 동작 비주얼 스튜디오 나 -O0에서 GC C와 …

4
포크를 호출 할 때 스레드가 복사됩니까?
스레드로 실행중인 프로그램이 fork()있고 유닉스 기반 시스템에서 호출 하면 스레드가 복사됩니까? 현재 프로세스의 가상 메모리가 생성 된 새 프로세스에 1 : 1로 복사된다는 것을 알고 있습니다. 스레드가 프로세스의 가상 메모리에 자체 스택을 가지고 있음을 알고 있습니다. 따라서 최소한 스레드 스택도 복사해야합니다. 그러나 가상 메모리에 상주하지 않아 복사되지 않는 스레드에 더 …

7
Java 8에서 블로킹 백그라운드 로더를 작성하는 방법은 무엇입니까?
질문 Java 8에서 적절한 백그라운드 로더를 어떻게 작성합니까? 조항들: 백그라운드에서 데이터를로드해야합니다 로드 후 데이터가 표시되어야합니다 데이터가로드되는 동안 더 이상 요청을 수락하지 않아야합니다. 데이터가로드되는 동안 요청이있는 경우 특정 시간 초과 (예 : 5 초) 후에 다른로드를 예약해야합니다. 예를 들어 다시로드 요청을 수락하지만 요청으로 데이터베이스가 넘치지 않도록하는 것입니다. MCVE 여기 MCVE가 있습니다. …

1
스레드 생성은 자체적으로 메모리 순서 보장을 제공합니까?
나는 대략적으로 이것을하고 싶다 : 초기 실 : 전역 변수에 값을 쓰십시오 (다시 쓰지 않을 것입니다) 이것은 약간 큰 데이터 (배열, 문자열 등) 일 수 있습니다. 단순히 만들 수 없습니다 std::atomic<>. 다른 스레드를 생성 다른 스레드 : 세계 상태를 읽다 일하는 등 이제 인수를 전달할 수 있다는 것을 알고 std::thread있지만이 …

3
C ++ for 루프 인쇄 잘못된 값의 스레드
C ++에서 멀티 스레딩을 이해하려고 하는데이 문제가 발생했습니다 .for 루프에서 스레드를 시작하면 잘못된 값이 인쇄됩니다. 이것은 코드입니다. #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int i=0; i<n; i++ ){ threads.emplace_back(std::thread([&](){ print_id(i); })); } for(auto& t: …

4
Windows에서 멀티 스레드 Java 애플리케이션의 CPU 사용량이 너무 적음
대규모 선형 프로그래밍 문제를보다 정확하게하기 위해 수치 최적화 문제 클래스를 해결하기 위해 Java 응용 프로그램을 개발 중입니다. 단일 문제는 더 작은 하위 문제로 나뉘어 병렬로 해결할 수 있습니다. CPU 코어보다 하위 문제가 더 많으므로 ExecutorService를 사용하고 각 하위 문제를 ExecutorService에 제출되는 Callable로 정의합니다. 하위 문제를 해결하려면이 경우 선형 프로그래밍 솔버 …

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