2009-02-27 5 views
0

다른 사고 방식을 제공하거나 멀티 스레드 응용 프로그램을 작성하는 데있어 다른 패러다임이 있습니까? 아마도 프로그래밍 프로그래밍과 같은 절차 적 프로그래밍과 크게 다른 것입니다.스레딩 패러다임?

답변

2

동시성에는 여러 문제에 대한 여러 모델이 있습니다. concurrency에 대한 Wikipedia 페이지에는 몇 가지 모델이 나열되어 있으며 concurrency patterns에 대한 페이지가 있습니다.이 페이지에는 여러 가지 종류의 동시성 접근 방법에 대한 좋은 출발점이 있습니다.

취할 접근 방식은 손에서이 문제에 매우 의존한다. 서로 다른 모델은 동시 응용 프로그램에서 발생할 수있는 여러 가지 다른 문제를 해결하고 일부는 다른 응용 프로그램을 기반으로합니다.

동시성에서는 동시성 문제를 해결하기 위해 동시성이 mutual exclusionsynchronization을 함께 사용한다고 알려졌습니다. 일부 솔루션은 하나만 필요하지만 두 가지 모두 함께 동시성 문제를 해결할 수 있어야합니다. 당신이 불변성과 동시성 볼 수있는 매우 다른 개념

. 모든 데이터가 변경되지 않으면 동시성에 대한 기존의 접근법조차 필요하지 않습니다. This article이 주제를 탐구합니다.

0

정말 질문을 이해하지 않지만, 당신이 CUDA 사용하여 일부 코딩을하고 시작하면 당신에게 멀티 스레딩 애플리케이션에 대해 생각하는 몇 가지 다른 방법을 제공합니다.

당신은 동시에 수천 개의 스레드를 가지고 있기 때문에 등 세마포어, 모니터, 같은 일반적인 멀티 스레딩 공예, 다르다. 따라서 CUDA의 병렬 처리 문제는 데이터를 분할하고 나중에 데이터 덩어리를 혼합하는 데 더 많이 사용됩니다. 일반적인 시리얼 문제의 완전한 재검토의 그냥 작은 예를

SCAN 알고리즘이다. 그것은 간단 같은 :

  • {A, B, C, D, E}

나는 다음과 같은 설정을 원하는 SET를 감안할 때 :

{A, A +의 B, A

이 경우 '+'기호는 임의의 정족수 연산자입니다 (플러스뿐만 아니라 곱셈도 할 수 있습니다.) + + b + c + d, a + b + c +).

어떻게 병렬로 수행 할 수 있습니까? 그것은이 문제에 대한 완전히 새로운 생각입니다.이 내용은 paper에 설명되어 있습니다. CUDA 다른 알고리즘의

더 많은 구현이 NVIDIA website

0

음에서 찾을 수 있습니다, 매우 보수적 인 패러다임의 변화는 프로세스 중심의 동시성 (주소 공간 분리를 향한 스레드 중심의 동시성 (모든 것을 공유)에서이다). 이렇게하면 의도하지 않은 데이터 공유를 피할 수 있고 여러 하위 시스템간에 통신 정책을 적용하기가 더 쉽습니다.

이 아이디어는 오래되어보다 안정적인 운영 시스템을 구축하기 위해 마이크로 커널 OS 커뮤니티 (다른 사람의 사이에서) 전파되었다. 흥미롭게도 Microsoft Research의 Singularity OS 프로토 타입은이 모델로 작업 할 때 기존 주소 공간이 필요하지 않다는 것을 보여줍니다.

0

내가 가장 좋아하는 비교적 새로운 아이디어는 transactional memory입니다. 업데이트가 항상 원자적임을 확인하여 동시성 문제를 피하십시오.

0

재미있는 유사 콘텐츠는 OpenMP입니다.