Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    3

    [C] mutex ricorsivi

    Ho provato a creare un mutex ricorsivo in questo modo:

    pthread_mutex_t mutexMenu =PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;

    il compilatore però mi dice che:

    error: 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' undeclared here (not in a function)

    ovviamente ho incluso la libreria con l'istruzione

    #include<pthread.h>

    se invece definisco il mutex non ricorsivo cioè così:

    pthread_mutex_t mutexMenu =PTHREAD_MUTEX_INITIALIZER;

    il compilatore genera l'eseguibile correttamente

    siccome la libreria da cui attinge il codice i mutex è la pthread.h sono andato a guardarla e ho trovato questo

    #define PTHREAD_MUTEX_INITIALIZER \
    {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_ALT_INITIALIZER}
    #ifdef __USE_GNU
    # define PTHREAD_RECURSIVE_MUTEX
    _INITIALIZER_NP \
    {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_ALT_INITIALIZER}
    # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \
    {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_ALT_INITIALIZER}
    # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \
    {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_ALT_INITIALIZER}
    #endif

    cosa sto sbagliando?perchè non mi compila il mutex ricorsivo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Questa linea

    #ifdef __USE_GNU

    cosa ti dice?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    3
    non volevo risposte ironiche

    ho capito che __USE_GNU non è definito.

    Comunque dopo ore e ore di ricerche ho scovato questo

    clicca

    cioè mettendo questo blocco di codice prima di tutti gli include funziona

    #if !defined(_GNU_SOURCE)
    #define _GNU_SOURCE
    #endif
    #include <pthread.h>

    beh adesso compila poi bisogna vedere se funziona veramente.


    Comunque non è che mi vada molto di andare a guardare le librerie di sistema....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La mia non era una risposta ironica .... era una domanda ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.