×
Namespaces

Variants
Actions

Sincronização entre processos

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 09 Dec 2011

Uma maneira de prover sincronização entre processos é através do uso de semáforos. Aqui, semáforos podem ser usados para comunicar o estado de um processo.

Em Symbian C++, isso pode ser feito através do uso de RSemaphore, RFastLock, RMutex, RCriticalSection, etc.

Em Open C, os passos seguidos para usar semáforos para sincronização são os seguintes:

  • Criar um semáforo usando semget().;
  • Quando um processo precisa ser sincronizado com algum outro processo, ele pode criar o semáforo e setar o valor semval() com alguma condição;
  • Uma vez que o outro processo tenha terminado sua tarefa, satisfaz a condição pela qual o primeiro processo está esperado;
  • Apagar o semáforo criado.
#include <sys/sem.h>
#define SEM_KEY 1000
int main()
{
int semid = semget(SEM_KEY, 1, IPC_CREAT);
int ret = semctl(semid, 0, SETVAL, 1);
struct sembuf st = {0, 0, 0};
ret = semop(semid, &st, 1); // processo -1 é bloqueado aqui.
ret = semctl(semid, 1, IPC_RMID);
return 0;
}

Para comunicação entre threads, pode-se usar pthread_mutex() para sincronização.

Nota: Pode haver diversas maneiras de conseguir essa funcionalidade. Portanto, mais trechos de código mostrando como fazer isso são mais que bem vindos.

Links relacionados

This page was last modified on 9 December 2011, at 04:24.
38 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×