×
Namespaces

Variants
Actions

Comunicação entre processos ou threads

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

Compatibilidade
Plataforma(s):
Symbian

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 08 May 2013



Contents

Introdução

Os mecanismos a seguir são usados para permitir a comunicação entre duas threads dentro de um mesmo processo ou entre dois processos quaisquer (tanto aplicações Symbian quanto Open C):


Pipes (dutos)

Pipes podem ser usados quando um processo cria um processo filho ou quando cria threads e necessita comunicar com eles. Os seguintes passos devem ser executados:

  • Declarar uma variável global do tipo array [2] de inteiros (int);
  • Criar um pipe;
  • Criar uma nova thread ou processo;
  • O pai deve ler dados do pipe;
  • O filho deve ler dados do pipe;
  • Fechar os descritores de escrita/leitura.

Exemplos de pipes


Pipes rotulados

Pipes rotulados (mkfifo) são usados para prover comunicação entre threads dentro de um mesmo processo ou entre processos não relacionados. Os seguintes passos devem ser executados:

  • Criar um pipe rotulado usando mkfifo;
  • Criar um processo ou thread e abrir o pipe em modo de escrita;
  • Outro processo deve abrir o pipe em modo de leitura;
  • Fechar os descritores de escrita/leitura.

Exemplos de pipes rotulados


Filas de mensagens

Filas de mensagens são usadas para prover comunicação entre threads dentro de um mesmo processo ou entre dois processos não relacionados. Os seguintes passos devem ser executados:

  • Criar uma fila de mensagens usando msgget;
  • Criar um processo ou thread e enviar alguma mensagem para a fila;
  • Ler a mensagem a na thread principal;
  • Apagar a fila de mensagens.

Exemplos de filas de mensagens


Memória compartilhada

Memória compartilhada é usada para prover comunicação entre threads dentro de um mesmo processo ou entre dois processos não relacionados. Os seguintes passos devem ser executados:

  • Criar segmento de memória compartilhada usando shmget;
  • Anexar segmento compartilhado ao espaço de endereçamento dos processos/threads usando shmat;
  • Implementar mecanismo de sincronização para controlar acesso ao recurso compartilhado, no caso a memória;
  • Remover o segmento de memória compartilhada do espaço de endereçamento dos processos/threads usando shmdt.

Exemplos de memória compartilhada

This page was last modified on 8 May 2013, at 02:59.
80 page views in the last 30 days.
×