Jeśli piszesz aplikację wielowątkową, która używa wywołań systemowych/biblioteki używających errno do wskazania typu błędu, czy istnieje bezpieczny sposób korzystania z errno? Jeśli nie, czy jest jakiś inny sposób wskazania rodzaju błędu, który wystąpił, a nie tylko tego, że wystąpił błąd?Czy istnieje sposób bezpiecznego korzystania z errno w aplikacji wielowątkowej?
33
A
Odpowiedz
34
Jeśli standardowa biblioteka jest wielowątkowa, prawdopodobnie ma numer #define
, który zmienia errno
w wywołanie funkcji, które zwraca wartość zwracaną przez lokalny błąd wątku. Jednak, aby go użyć, zwykle musi zawierać <errno.h>
, zamiast polegać na deklaracji extern
.
Znalazłem artykuł Thread-safety and POSIX.1, który odnosi się do tego właśnie pytania.
16
man errno
mówi:
errno jest definiowana przez standard ISO C być modyfikowalny lwartość od typu int, i nie musi być wyraźnie deklarowane; errno może być makrem. errno jest wątkiem lokalnym; ustawienie go w jednym wątku nie wpływa na jego wartość w żadnym innym wątku.
Powiązane problemy
- 1. Jak korzystać z Hibernate w aplikacji wielowątkowej?
- 2. Profilowanie/optymalizacja aplikacji wielowątkowej
- 3. Czy istnieje forma "bezpiecznego odlewania" w Javie?
- 4. Ostatni wątek aplikacji wielowątkowej
- 5. Sposób bezpiecznego podania hasła aplikacji R?
- 6. Czy istnieje sposób korzystania z pasków narzędzi wstążki w Tkinter?
- 7. Czy istnieje sposób korzystania z Thickboxa z dynamiczną zawartością?
- 8. Czy istnieje sposób korzystania z klienta aiohttp z serwerem proxy?
- 9. Ogólne podejście do NSManagedObjectContext w wielowątkowej aplikacji
- 10. Czy istnieje jakiś rodzaj bezpiecznego magazynu lokalnego w systemie Windows?
- 11. DLL i klasa w aplikacji wielowątkowej
- 12. Błąd konfiguracji Fluktuacji Nhibernate w aplikacji wielowątkowej
- 13. Osadzanie pythona w aplikacji wielowątkowej C
- 14. Sposób korzystania z aplikacji Topshelf.Logging właściwie
- 15. uWSGI i wdzięcznie zabijanie wielowątkowej aplikacji Flask
- 16. Prawidłowe użycie yieldIfContendedSafely() w aplikacji wielowątkowej z systemem Android
- 17. Czy istnieje ustalony sposób korzystania z plików konfiguracyjnych dla wdrożonej aplikacji MATLAB?
- 18. Eksport z bezpiecznego źródła
- 19. dispatch_get_current_queue() przestarzałe, czy istnieje alternatywa dla bezpiecznego CoreData?
- 20. Sposób korzystania z paska postępu w aplikacji iPhone
- 21. Czy to właściwy sposób korzystania z History.js?
- 22. UIWebView w wielowątkowej ViewController
- 23. Czy istnieje sposób korzystania z interfejsu API do przeglądania w środowisku Django Rest Framework z Authtokenem
- 24. Czy istnieje sposób na wyłączenie panelu środowiska w aplikacji RStudio?
- 25. Czy istnieje sposób na przejrzenie aplikacji Rails w debugerze?
- 26. Czy free() ustawia errno?
- 27. Czy istnieje sposób korzystania z czcionek Google Web w wiadomościach e-mail w formacie HTML?
- 28. Sposób korzystania z addEventListener
- 29. Sposób korzystania z Tika w trybie serwera
- 30. Sposób korzystania z ConfigurationManager.AppSettings
Dzięki! Szybkie sprawdzenie w /usr/include/bits/errno.h potwierdziło, że errno jest rzeczywiście zdefiniowane jako wątek podczas używania wątków na mojej maszynie Ubuntu. –