Articles of sémaphore

L’utilisation de sémaphores dans cette solution est-elle correcte?

Problème: je dois incrémenter les variables x1 et x2, ce qui devrait être fait par des threads séparés. L’incrément suivant des deux variables ne devrait pas être appelé tant que l’incrément précédent des deux variables n’est pas terminé. Solution proposée: initialisez 4 sémaphores et appelez des threads distincts pour une incrémentation distincte de la variable. […]

ubuntu: sem_timedwait ne se réveille pas (C)

J’ai 3 processus qui doivent être synchronisés. Le processus un fait quelque chose puis réveille le processus deux et dort, ce qui fait quelque chose puis réveille le processus trois et dort, ce qui fait quelque chose et réveille le processus un et dort. La boucle entière est programmée pour s’exécuter autour de 25hz (provoquée […]

Comment lire / écrire sur un mappage partagé anonyme?

Si vous tentez d’écrire un message dans la mémoire partagée anonyme avec un processus enfant, arrêtez-le. Ensuite, faites lire le message par le parent. J’ai vu des exemples de mappage de fichiers d’entrée et de sortie à l’aide de descripteurs de fichiers obtenus par le biais d’appels en read et en write . Mais je […]

Sémaphore binary partagé entre plusieurs processus (pas de threads, processus uniquement) à l’aide de POSIX en langage C

Je crée des sémaphores binarys partagés entre plusieurs processus (pas de threads, processus uniquement) à l’aide de POSIX en langage C. si je crée un sémaphore binary en utilisant mutex, typedef struct BIN_SEMA { pthread_cond_t cv; /* cond. variable – used to block threads */ pthread_mutex_t mutex; /* mutex variable – used to prevents concurrent […]

implémentation de sémaphore

Je reçois une erreur dans le programme suivant. Je veux montrer comment deux processus peuvent partager une variable à l’aide de sémaphore. Quelqu’un peut-il me guider? Je ne suis pas capable de déboguer les erreurs … #include #include #include #include #include #include int main() { int pid,mutex=1; int semid; /* semid of semaphore set */ […]

Problème de sémaphore et de pthread POSIX

Je pratique des sémaphores en utilisant la bibliothèque POSIX. J’essaie de faire passer les threads (représentant les clients) à travers un sémaphore (représentant un serveur) pouvant accueillir 8 personnes sur deux tables (chacune contrôlée par sempahores). Je pense que le coupable est l’ordre de délocking et de locking de plusieurs sémaphores, mais je n’arrive pas […]

Comment définir correctement timespec pour sem_timedwait afin de se protéger contre les erreurs EINVAL

J’essaie d’utiliser sem_timedwait () pour verrouiller et déverrouiller plusieurs fois un sémaphore. Sur la base de l’exemple ci- dessous , je configurais ma struct timespec de la manière suivante pour un délai d’attente de 20 ms: sem_t semaphore; //initialized somewhere else void waitForSomething () { int ret; struct timespec ts; if (clock_gettime(CLOCK_REALTIME, &ts) == -1) […]

Que se passe-t-il lorsque deux processus tentent d’accéder à une section critique avec un sémaphore = 0?

Dans mon code je fais l’initialisation suivante: struct PipeShm myPipe = { .init = 0 , .flag = FALSE , .mutex = NULL , .ptr1 = NULL , .ptr2 = NULL , .status1 = -10 , .status2 = -10 , .semaphoreFlag = FALSE }; int initPipe() { if (!myPipe.init) { myPipe.mutex = mmap (NULL, sizeof […]

protéger un segment de mémoire partagée avec un sémaphore ne fonctionne pas

J’ai un programme qui crée 1000 processus enfants. Chaque processus doit accéder à une variable int, stockée dans un segment de mémoire partagée. Pour protéger la variable int, j’ai créé un sémaphore: #define _XOPEN_SOURCE #include #include #include #include #include #include #include #include #include #define KEY 1000 #define LOCK -1 #define UNLOCK 1 int *ptr; int […]

Sémaphores et mémoire partagée

J’ai une question concernant la programmation multiprocessus en C, j’ai plusieurs processus de lecture qui liront d’un fichier dans un tampon partagé et plusieurs processus d’écriture lisant à partir du tampon et dans un autre fichier, quel type de sémaphores devons-nous utiliser pour cela . et comment pouvons-nous utiliser la mémoire partagée avec les sémaphores.