저는 현재 작업하고있는 응용 프로그램을 가지고 있으며 현재 현재 상황을 보여줍니다. 좀 더 효율적으로 만드는 데 도움이 될지 궁금합니다. 작업 병렬 라이브러리 (Task Parallel Library)도 사용하려고합니다 (도움이되는 경우). 현재 상황을 설계하는 방식에 제한이 없습니다. 즉, 앱의 일부를 완전히 다시 디자인 할 수 있습니다. 그것은 모두 당신이 "효율성", 당신은 멀티 스레드 디자인을 유지하는 비용 대 해결하기 위해 시도하고있는 무슨 문제가 무엇을 의미하는지에 따라 달라집니다 어떤 도움다중 스레드 응용 프로그램으로 작성하는 방법에 대한 지침이 필요합니다.
2
A
답변
2
에 대한
class Program
{
static void Main(string[] args)
{
IList<ISystem> systems = GetSystems();
if (systems.Where(s => s.Import = true).Count() == 0)
return;
var export = new Export();
// Import & Export People
exportData.LoadPeople();
foreach(var system in systems)
foreach(var person in export.People)
system.Push(person);
export.LoadLocations();
foreach(var system in systems)
foreach(var location in export.Locations)
system.Push(location);
export.LoadOtherData();
foreach(var system in systems)
system = system as IDifferentSystem;
if (system == null) continue;
foreach(var data in export.OtherData)
system.Push(data);
}
}
감사합니다. 당신은 장기 실행 작업이 호출 스레드를 차단하지 않으
- : 몇 가지 매우 일반적인 대한 조언
, 다중 스레드 디자인이 적절한 문제의 세 가지 유형이 있습니다. 이것은 아마도 GUI 응용 프로그램이 응답 성을 유지할 수 있도록 기본 GUI 스레드를 차단하고 싶지 않은 GUI 응용 프로그램에 더 적용 할 수 있습니다.
- 이 알고리즘은 데이터를 세분화하고 여러 코어에서 병렬로 알고리즘을 실행할 수있는 "당황스럽게 병렬"이라고합니다.
- 로컬 또는 원격 다른 프로세스와의 통신. 다른 프로세스는 물론 다른 스레드입니다.
위는 조금 이상 - 간단하지만 포인트는 선입견 솔루션으로 문제를 강제 반대로 당신이 바로 그 문제를 해결하고 있는지 확인한다. 멀티 스레드 디자인 사용을 결정할 때 고려해야 할 많은 요소. 자동화 된 테스트가 더욱 어려워 질 것입니다. 디자인이 실행의 정확성 (충돌/중단/데이터 손상 없음)과 특정 앱의 성능 정의로 유지 관리 될 수 있습니까? 물론 TPL은 멀티 스레드 설계를 더 쉽게 만들지 만 확실히 이러한 비용을 모두 제거하지는 않습니다.
항상 대안을 고려하십시오. 예를 들어 위의 # 1은 비동기식을 사용하여 수행 할 수도 있습니다. 나중에 I/O 콜백이 호출하는 스레드에서 실행됩니다 (내부적으로는 멀티 스레드이지만 사용자가 신경 쓰지 않아도됩니다). 이것은 여전히 단일 스레드 설계이므로 걱정할 필요가 없습니다. 또한 # 2의 경우 성능을 높이기 위해보다 효율적인 알고리즘 및/또는 데이터 구조 레이아웃을 사용할 수도 있습니다.
관련 문제
- 1. 관성을 구현하는 방법에 대한 몇 가지 지침이 필요합니다.
- 2. 기능 비동기/비 차단을 만드는 방법에 대한 지침이 필요합니다.
- 3. 통역사 작성에 대한 지침이 필요합니다.
- 4. 은 Amazon AWS의 사용에 대한 지침이 필요합니다.
- 5. 사용할 맵핑 전략에 대한 지침이 필요합니다.
- 6. Azure WorkerRole 오류 처리 지침이 필요합니다.
- 7. T4를 사용하여 aspx 또는 ascx를 생성하는 방법에 대한 지침이 있습니까?
- 8. AWS S3를 CKFinder와 함께 사용하는 방법에 대한 예제/지침이 있습니까?
- 9. 스킬러 턴 기반 게임에서 게임 아이템을 관리하는 방법에 대한 지침이 필요합니다.
- 10. 리눅스 OS를 개발하기위한 지침이 필요합니다
- 11. iPhone 응용 프로그램 개발을 시작하는 방법에 대한 도움이 필요합니다.
- 12. 웹 응용 프로그램을 관리하는 방법에 대한 제안이 필요합니다.
- 13. window.resize 함수를 작성하는 방법에 대한 조언?
- 14. VxWorks 용 Qt를 작성하는 방법에 대한 지침?
- 15. Apple OS X 용 대체 JVM에 대한 지침이 필요합니다.
- 16. 다중 스레드 응용 프로그램의 예외.
- 17. 다중 스레드 응용 프로그램 디버깅
- 18. for-loop를 사용하는 방법에 대한 도움이 필요합니다.
- 19. 다중 스레드 창 서비스 만들기
- 20. 작성하는 방법에 기능을 최대
- 21. 다중 포트를위한 다중 스레드?
- 22. 웹 서비스에서받은 xml 유효성 확인에 대한 지침이 필요합니다.
- 23. Java에서 Naive Bayes 알고리즘 구현 - 지침이 필요합니다.
- 24. 내 응용 프로그램을 C#으로 다중 스레드 응용 프로그램으로 작성하려면 어떻게해야합니까?
- 25. Perl에서 체크섬을 생성하는 데 필요한 지침이 필요합니다.
- 26. Cognos 보안 공급자 작성 방법에 대한 리소스가 필요합니다.
- 27. 어떻게 다중 UI 스레드 윈폼 응용 프로그램
- 28. 다중 스레드 #
- 29. 요구 사항에 대한 쿼리를 작성하는 방법에 대한 도움말
- 30. 파이썬 프로그램을 스레드 응용 프로그램으로 변환하는 프로세스가 있습니까?