스레드의 실제 사용


3

작업에서 특히 스레드를 사용했던 것은 무엇입니까?

(응용 프로그램에 대한 설명을 부탁드립니다와 스레드가 어떻게 도움이되었는지/응용 프로그램을 강화.)

+2

별로 구체적이지 않습니다. 실제 질문 있습니까? 우리 중 대부분은 수백 개의 작업에 쓰레드를 사용했다고 생각합니다. 당신은 우리가 "if 문"을 어떻게 사용했는지 물어볼 수도 있습니다. 22 feb. 092009-02-22 01:03:36

+1

나에게 조금 숙취가있다. 22 feb. 092009-02-22 01:07:29

  0

하하하, 조금 숙박 해. 22 feb. 092009-02-22 01:23:46

  0

숙제보다 일하는 것이 더 문제가되지 않는다. 22 feb. 092009-02-22 01:31:26

  0

학교에있는 동안 모든 쓰레기의 적용 가능성을보기가 어려울 수 있음을 인정하지만 어쩌면 내가 OP를 줄 것이다. 의심의 이익. 22 feb. 092009-02-22 01:31:32

  0

Andrew : 아마도 그렇지만 컨텍스트에 대한 정보가 더 좋을 것입니다. 방금 한 일을 말하면 실제로 유용한 답변을 얻는 데 도움이됩니다. 22 feb. 092009-02-22 01:33:38

0

가 변경된 파일을 찾는 디렉토리를 스캔합니다. 하위 디렉토리마다 스레드를 생성 한 다음 단일 스레드에서 수행하는 것이 훨씬 빠릅니다.

  0

그러나 작업 스레드의 고정 크기 풀을 사용하는 것보다 하위 디렉토리 당 스레드를 생성하는 것이 더 빠릅니까? 22 feb. 092009-02-22 01:59:02

  0

스레드 풀을 사용합니다. 22 feb. 092009-02-22 02:14:12


1

가장 일반적인 용도는 장기 실행 백그라운드 작업에 대한 진행률 표시 줄과 같은 응답 형 UI입니다.

  0

일부 상황에서는 명시 적 메시지 펌핑이 스레드가 "올바른"접근 방식 일지라도 거의 잘 작동하고 수행하기 쉽습니다. 22 feb. 092009-02-22 01:25:54


4

스레드는 대부분의 UI 작업에 중요합니다. 그렇지 않으면 계산을 원할 때나 잠시 시간이 걸릴 때마다 UI가 고정됩니다.

따라서 대부분의 GUI 프레임 워크에는 이벤트 루프 (및 일부 드로잉 활동)를 처리하는 UI 스레드가 있지만 대부분의 사용자 코드는 다른 스레드에서 발생합니다.

스레드는 때때로 시스템 상태를 일시적으로 변경하거나 일시적으로 변경하는 데 유용합니다.

  0

그게 스레드에 대한 가능한 사용이지만, "대부분의 GUI 프레임 워크는 UI 스레드를 가지고 있지만 ... 대부분의 사용자 코드는 다른 스레드에서 발생합니다." 내가 사용했던 GUI 프레임 워크에서 일반적인 경우는 아니 었습니다. 22 feb. 092009-02-22 02:08:54

  0

맞습니다. GUI 툴킷을 의미하기 때문에 GUI 프레임 워크라는 용어가 정확하지 않습니다. Eclipse와 같은 애플리케이션 구축을위한 프레임 워크를 의미했습니다. 22 feb. 092009-02-22 03:41:24


1

배경 작업 :

  • 취급 네트워크 연결 및 프로토콜.
  • Doing Sound Synthesis는 멀티미디어 응용 프로그램의 백그라운드에서 실행됩니다. 멀티미디어 응용 프로그램 (CD 스트리밍)에 백그라운드에서 파일 로딩을하는

다른 용도 :

  • 두 개의 서로 다른 스레드에서 동일한 코드의 두 인스턴스를 실행하여 특정 알고리즘을 가속.

0

우리는 메인 스크린이 현재 로그온 한 사용자에 맞게 조정 된 여러 응용 프로그램에 스레드를 사용하고 있습니다.

워크 플로를 가져 오는 것은 시간이 많이 걸릴 수 있습니다. 워크 플로우의 다양한 부분은 다른 스레드에 의해로드됩니다. 우리의 주요 응용 프로그램 인 BP/GeNA의 경우 약 11 개의 스레드가 실행되고 각각은 데이터베이스 쿼리를 실행합니다. 서버에서 동시 클라이언트 요청을 처리

감사합니다,
리벤


2

.


0

내가 처리하는 요소 사이에 상호 의존성이 없을 때, 그리고 병목 현상이 자주 발생하지 않을 때, 내가 알기로 많은 자원을 가지고 무언가를하고 싶을 때 스레드를 가장 자주 사용한다. 디스크의 CPU와 같은 로컬 리소스. 예를 들어 검색 할 URL이 여러 개있는 경우 각 URL은 별도의 스레드로 이동합니다.


4

(덜 심각한 답변) 나는 시스템을 재미 있고 모호하지 않은 방식으로 엉덩이에 떨어 뜨리고 싶은 상황에서 스레드를 사용하는 동시에 문제를 미루어 보일 수있는 방법에 대해 그럴듯한 거부 가능성을 여전히 갖고 있습니다.

또는 Rasmus Lerdorf의 말에 따르면 "사람들은 스레드 안전 코드를 작성할만큼 똑똑하지 않습니다."


1

내가 스레드를 사용하는 대부분의 시간을 알고 있습니다. 실제로 비동기식 덩어리를 시작하는 것입니다. 즉 신화적인 "배경"에서 어떤 일이 일어나기를 바랍니다. 불행히도 스레드에 대해 생각하는 것은 배경에 무언가를 넣지 않으므로 "일의 많은 일을 시작하십시오"라는 추상화의 정확한 수준이 아닙니다. 스레드 API를 사용하면 프로세스의 원래 스레드의 형제로서 물건을 실행하기위한 또 다른 장소를 만들 수 있으며, 그 사이에 공유되는 정보와 방법 등을 염려 할 필요가 있습니다. 그래서 코코아의 NSOperationNSOperationQueue과 같은 새로운 API를 즐기고 있습니다. 이 API의 경우, 작업의 일부를 시작하는 것은 단지 한 줄에 불과하며 라이브러리는 새 스레드를 시작해야하는지 아니면 이전 스레드를 다시 사용해야 하는지를 관리합니다.


0

이것은 매우 일반적인 질문입니다. 나는 작업이 로컬 스레드인지 또는 네트워크 I/O인지 또는 작업이 실행되는 하드웨어에 따라 "블록화"되는 컴퓨팅 집약적 인 작업인지 여부에 관계없이 잠재적으로 UI 스레드에서 작업을 차단하는 데 "스레드"를 사용했습니다. .

나는 즉 그 스레드에 적용을 완화 도움 특정 문제 나 패턴 :

  • 방법 스레드가 뷰 컨트롤러 모델과 관련된에 대해 물어 더 흥미로운 생각?
  • UI 스레드를 어떻게 처리해야합니까? 에 UI가 차단되지 않는다고 생각하지 않으십니까?
  • 어떻게하면 스레드 풀이 재귀 (네트워크)에 유용 할 수 있습니다 다른 사용자로 디렉터리 통과 에 대해 언급 했습니까?
  • 나는 연산 집약적 인 작업 또는 내가 스레드 풀을 사용하고 는 적합한으로 OS가 선제 스레드를 예약 할 수 있도록해야한다의 협력 스케줄링 스레드를 affinitizing되어야합니다.

꽤 넓은 공간이며 명확성이 도움이 될 것입니다.


2

스레드는 대부분의 I/O 바운드 응용 프로그램 및 합리적으로 복잡한 서버 쪽 응용 프로그램의 기본 요소입니다. 여러 데이터 소스로 정보를 교환하는 응용 프로그램을 생각해보십시오. 독립적 인 스레드에서이 정보를 처리 할 수 ​​있어야합니다. 특히이 데이터에 대한 작업이 대기 시간을 겪거나 완료하는 데 상당한 시간을 필요로하는 경우에 그렇습니다.

대부분의 경우 스레드는 종종 응용 프로그램 내의 다양한 문제를 분리하는 데 도움이됩니다. 이해 관계자에게 이벤트를 전달하는 단일 스레드는 대다수의 경우 잘 확장되지 않습니다.

가장 단순한 애플리케이션을 제외하고는 어느 정도 스레딩이 필요합니다.


0

웹 응용 프로그램을 작성하므로 작성한 모든 코드가 여러 스레드에서 실행됩니다.


0

Google의 앱은 웹 서비스이므로 요청 당 스레드를 생성합니다. 기술적으로는 JNI가 스레드를 생성하지만 코드는 관계없이 스레드로부터 안전해야합니다. 우리는 Hibernate와 ESB 기반 인프라 모두에서 흥미로운 (FSVO) 문제를 겪었지만, 대부분 ThreadLocals을 유지하고 서브 시스템 엔트리 포인트를 동기화하는 것이 효과적입니다.우리는 몇 가지 동시 요청을 시도하지 않았으므로 아직 파악하지 못한 경쟁 조건이있을 수 있지만 전반적으로 우리는 성과가 좋고 올바른 대답을 제공합니다.


0

필자는 일정한 간격으로 경고음을 울리는 스레드를 생성하여 테스트 운영자에게주의가 필요한 사항을 알리는 기능을 작성했습니다. 모달 대화 상자에 응답 한 후 스레드가 종료됩니다.


0

실업과 관련이 없지만 Netflix Prize에서 일부 부작용을 수행하고 있습니다. 내 컴퓨터에는 8 개의 코어와 20GB의 RAM이 있습니다 ... 1 개의 스레드 만 실행하면 완전히 낭비가됩니다. 따라서 일반적으로 16 개의 스레드가 시작됩니다.