Czego unikać ze względu na wydajność w kodzie wielowątkowym?
Obecnie przeglądam / refaktoryzuję aplikację wielowątkową, która ma być wielowątkowa, aby móc korzystać ze wszystkich dostępnych rdzeni i teoretycznie zapewniać lepszą / lepszą wydajność (lepsze jest określenie komercyjne na lepsze: P)
Jakie rzeczy powinienem wiedzieć podczas programowania aplikacji wielowątkowych?
Mam na myśli rzeczy, które znacznie wpłyną na wydajność, być może nawet do tego stopnia, że nie uzyskasz niczego przy wielowątkowości, ale stracisz dużo na złożoności projektu. Jakie są duże czerwone flagi dla aplikacji wielowątkowych?
Czy powinienem zacząć kwestionować zamki i sprawdzać strategię bez blokady, czy też są inne ważne punkty, które powinny zapalić światło ostrzegawcze?
Edytować: Odpowiedzi, które chciałbym uzyskać, są podobne do odpowiedzi Janusza, chcę, żeby czerwone ostrzeżenia wyszukały w kodzie, wiem, że aplikacja nie działa tak dobrze, jak powinna, muszę wiedzieć, od czego zacząć, co powinienem się martwić i gdzie powinienem umieścić moje wysiłki. Wiem, że to rodzaj ogólnego pytania, ale nie mogę opublikować całego programu, a gdybym mógł wybrać jedną sekcję kodu, nie musiałbym pytać w pierwszej kolejności.
Używam Delphi 7, chociaż aplikacja zostanie przeniesiona / remake w .NET (c #) na następny rok, więc wolę usłyszeć komentarze, które mają zastosowanie jako ogólna praktyka i jeśli muszą być specyficzne dla jednego z nich te języki