2010-07-05 17 views

Odpowiedz

20

Samą funkcję można bezpiecznie wywołać. Staje się niebezpieczne, jeśli wszyscy próbują działać na tej samej zmiennej.

+0

Masz na myśli zmienną, która nie jest częścią funkcji nazywanej poprawnie, tak jakby AddTwo zmodyfikował zmienną globalną? – jmasterx

+2

Prawidłowo. Mówię o adresach "num", a nie "num". Przykładem jest próba modyfikacji globalnej zmiennej z wielu wątków. – Shirik

+0

Okej, cóż, moja aplikacja będzie dzielić pracę, więc nie powinno to stanowić problemu, dzięki! – jmasterx

2

Nie ma nic złego w wywołaniu tej samej funkcji z różnych wątków. Jeśli chcesz mieć pewność, że twoje zmienne są spójne, zalecane jest zapewnienie mechanizmów synchronizacji wątków, aby zapobiec awariom, warunkom racearound.

1

Zabezpieczenie zależy od wartości lpvoid arg.

Jeśli wszystkie argumenty różnią się od siebie nawzajem, to bezpieczne inaczej nie.

Aby wywołanie funkcji było bezpieczne, sprawdź "mutex".

0

Prawdziwa odpowiedź brzmi - to zależy ...

Na większości platform, tak, że to bezpieczne tak długo, jak nie masz nic niebezpiecznego w funkcji, które wspominają inni zrobić. Łatwo jest zepsuć, więc bądź ostrożny!

Na innych platformach jest zdecydowanie niebezpieczne. Na przykład większość kompilatorów języka C dla mniejszych mikrokontrolerów PIC nie obsługuje tego z powodu ograniczeń sprzętowych.

Ogólnie rzecz biorąc, tak, jest to jednak bezpieczne.

1

Zgodnie z ogólną zasadą funkcja jest wprowadzana ponownie, jeśli nie zmienia żadnych wspólnych zasobów (na przykład tych samych lokalizacji pamięci). Jeśli tak, musisz użyć jakiegoś mechanizmu synchronizacji, takiego jak muteksy lub semafory.

Powiązane problemy