Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 11:26, 31 October 2007.

Sincronização entre processos

From Forum Nokia Wiki

Original: Synchronization between processes

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

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX