This page was last modified 21:02, 26 October 2007.
Comunicação entre processos ou threads
From Forum Nokia Wiki
Original: How to communicate between two threads or processes
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.
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.
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
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Mobile internet toolkit 3.1 | pappago | General Browsing | 5 | 2006-01-10 21:31 |
| j2me and video recording | cloud139 | Mobile Java General | 10 | 2007-08-16 19:55 |
| KERN EXE 3 panic in exe | santosh shetty | General Symbian C++ | 3 | 2006-01-11 08:36 |
| Sound crashes the 6600 at unpredictable times! | lax@work | Mobile Java Media (Graphics & Sounds) | 8 | 2004-12-07 12:11 |
| Will be 7 threads too many? Can debug it on emulator? | hansoft | General Symbian C++ | 3 | 2004-06-01 15:44 |
