1

Temat: Mutex - problem z kompilacją

Dlaczego próba kompilacji:

#include <mutex>

int main()
{
     mutex m;
}

kończy się tak:

m68k-atari-mint-gcc mutex.cpp
mutex.cpp: In function 'int main()':
mutex.cpp:5:5: error: 'mutex' was not declared in this scope
     5 |     mutex m;

?

Toolchain Thorsten'a oparty na gcc 9.x, ale strzelam, że Vincent'owy pewnie też tak się zachowa.

2

Odp: Mutex - problem z kompilacją

Nie wiem jak jest w tym środowisku z kompatybilnością ze standardem, ale ja bym spróbował std::mutex

3

Odp: Mutex - problem z kompilacją

Czy nazwa kompilowanego pliku mutex.cpp nie powoduje, że gcc próbuje dopasować plik nagłówkowy z tego katalogu gdzie masz mutex.cpp bo mutex.cpp implikuje mu lokalny plik nagłowkowy w tym katalogu a nie systemowy.
Zmień nazwę mutex.cpp

4

Odp: Mutex - problem z kompilacją

laoo/ng napisał/a:

Nie wiem jak jest w tym środowisku z kompatybilnością ze standardem, ale ja bym spróbował std::mutex

Żeby za każdym razem nie pisać "std::" można na początku dorzucić "use namespace std".

BartoszP napisał/a:

Czy nazwa kompilowanego pliku mutex.cpp nie powoduje, że gcc próbuje dopasować plik nagłówkowy z tego katalogu gdzie masz mutex.cpp bo mutex.cpp implikuje mu lokalny plik nagłowkowy w tym katalogu a nie systemowy.
Zmień nazwę mutex.cpp

Wtedy komunikat byłby o braku pliku nagłówkowego.

Zawsze mam rację, tylko nikt mnie nie słucha.

5

Odp: Mutex - problem z kompilacją

laoo/ng napisał/a:

Nie wiem jak jest w tym środowisku z kompatybilnością ze standardem, ale ja bym spróbował std::mutex

Dzięki za sugestię, ale niestety nie o to chodzi. Generalnie to w tym środowisku średnio jest z kompatybilnością ze standardem. Wiele rzeczy jest poza biblioteką standardową i std:: nie przechodzi, i w tym przypadku też na pewno tak jest.

Lizard napisał/a:

Wtedy komunikat byłby o braku pliku nagłówkowego.

Zgadza się.

6

Odp: Mutex - problem z kompilacją

A nie jest przypadkiem tam, że żeby Ci znalazło ten plik to musisz użyć kompilatora C++ (g++) zamiast zwykłego gcc?

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

7

Odp: Mutex - problem z kompilacją

Hmm, jak tak nad tym chwilę podumałem, to może i faktycznie. Zdziwiłbym się w sumie mocno, ale warto spróbować.

8

Odp: Mutex - problem z kompilacją

g++ i gcc to takie proxy do prawdziwego kompilatora ustawiające specyficzne parametry. Wielokrotnie naciąłem się na to, że nie można wołać ich zamiennie.

Lizard napisał/a:

Żeby za każdym razem nie pisać "std::" można na początku dorzucić "use namespace std".

Wciąganie namespace std do głównej przestrzeni nazwa powinno być karate usunięciem delikwenta piszącego takie herezje z cechu programistów. Te przykłady na pół strony robiące takie rzeczy wyrządziły dużo złego propagując taki zwyczaj.

9

Odp: Mutex - problem z kompilacją

Na Mint-a/Atari nie ma implementacji pthread z tego co mi wiadomo, a tym samym nie ma mutexów :)

What can be asserted without proof can be dismissed without proof.

10

Odp: Mutex - problem z kompilacją

Hmm, to by mogło tłumaczyć problem z kompilacją, tylko kurcze po co w takim razie zostały dodane wszystkie "wątkowe" nagłówki do toolchaina (mutex, conditional_variable, itd)?
Spróbuję z ciekawości w takim razie poszukać coś więcej w temacie braku wątków "u nas". Dzięki za wskazówkę.

Ostatnio edytowany przez jury (2021-06-07 12:26:05)

11

Odp: Mutex - problem z kompilacją

laoo/ng napisał/a:

Wciąganie namespace std do głównej przestrzeni nazwa powinno być karate usunięciem delikwenta piszącego takie herezje z cechu programistów. Te przykłady na pół strony robiące takie rzeczy wyrządziły dużo złego propagując taki zwyczaj.

Na szczęście nie jestem programistą więc mogę sobie pozwolić na takie wyskoki.

Zawsze mam rację, tylko nikt mnie nie słucha.

12

Odp: Mutex - problem z kompilacją

jury napisał/a:

tylko kurcze po co w takim razie zostały dodane wszystkie "wątkowe" nagłówki do toolchaina (mutex, conditional_variable, itd)?

Bo nagłówki są dla wygody ale pewno "ifdefowane" na potrzeby danego środowiska i efektywnie są puste.
Zresztą sam sobie odpowiedziałeś:

jury napisał/a:

...

Lizard napisał/a:

Wtedy komunikat byłby o braku pliku nagłówkowego.

Zgadza się.

moje 0.02$ do tego ... gdyby gcc było tylko do C a nie  C++, to powinie "dżeć paszcze" o brak pliku "mutex." czyli bez rozszerzenia.
https://gcc.gnu.org/onlinedocs/gcc/Invo … voking-GCC
https://gcc.gnu.org/onlinedocs/gcc/Invo … _002b_002b

13

Odp: Mutex - problem z kompilacją

BartoszP napisał/a:
jury napisał/a:

tylko kurcze po co w takim razie zostały dodane wszystkie "wątkowe" nagłówki do toolchaina (mutex, conditional_variable, itd)?

Bo nagłówki są dla wygody ale pewno "ifdefowane" na potrzeby danego środowiska i efektywnie są puste.

No właśnie tutaj nigdy nie zaobserwowałem takiego podejścia. Na przykład wiele "starych" bibliotek ciągnących się z gcc od dziesiątek już lat po prostu fizycznie brakuje w atarowskim toolchainie i już, a to byłby pierwszy przypadek na który trafiłiam, że nagłówki są ale nic poza tym. Co do samej zawartości nagłówków, to zaglądałem tam i nie wyglądały mi na "ifdefowane do pustki", ale zdarza mi się czasem kompletnie ominąć jakiś kawałek ifdef'a, więc może faktycznie tym razem tak została rozwiązana kwestia braku biblioteki. Z ciekawości zerknę dokładniej w te nagłówki (ale strzelam, że są pełnoprawne)

BartoszP napisał/a:

gdyby gcc było tylko do C a nie  C++, to powinie "dżeć paszcze" o brak pliku "mutex." czyli bez rozszerzenia.

W sumie racja

Ostatnio edytowany przez jury (2021-06-07 12:57:46)

14

Odp: Mutex - problem z kompilacją

@sqward: jedynie GNU pth zostało sportowane (,ale czy działa? ;-)), https://freemint.github.io/sparemint/sp … devel.html. Ale GNU pth działa na poziomie userspace'a, nie kernela os'a. https://en.wikipedia.org/wiki/GNU_Portable_Threads. Ma niby emulację api pthreads (opcjonalną). To chyba jedyna opcja..

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

15

Odp: Mutex - problem z kompilacją

Prawdopodobnie potrzebujesz implementacji jakiegoś konkretnego problemu a nie całej biblioteki.
https://greenteapress.com/wp/semaphores/
IMO klasyczne wprowadzenie do tematu, kod w czystym C i przejrzysty, platform agnostic, to kniga darmowa.

Ostatnio edytowany przez Nitro (2021-06-07 18:37:20)

16

Odp: Mutex - problem z kompilacją

Dzięki. Przejrzałem sobie tą książkę i zapowiada się nieźle.