Skip to content

GSD

Sections
Personal tools
You are here: Home » Teaching » Sistemas Operativos II » 5306O2 - Sistemas Operativos II (2006 - 2007) » Guiões das Aulas Práticas » #06 - Interface de sincronização de Threads Posix: Variáveis de Condição

#06 - Interface de sincronização de Threads Posix: Variáveis de Condição

Document Actions

Objectivos

Apresentação das primitivas básicas de sincronização por variáveis de condição da interface de Threads Posix. Realização de um exercício em que se simula a gestão de uma base de dados bancária num ambiente multi-threaded.

Novas chamadas ao sistema

  #include <pthread.h>

  int pthread_cond_init(pthread_cond_t *cond, 
       pthread_condattr_t *cond_attr);
  int pthread_cond_signal(pthread_cond_t *cond);
  int pthread_cond_broadcast(pthread_cond_t *cond);
  int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
  int pthread_cond_destroy(pthread_cond_t *cond);

Exercícios propostos

  1. Retomando o exercício da aula anterior (banco), modifique a implementação por forma a que as operações de lançamento e transferência bloqueiem enquanto o saldo disponível for insuficiente.
  2. Implemente o tipo abstracto de dados bounded buffer de inteiros para uso em cenários de concorrência. As operações a suportar deverão ser:
           int boundedbuffer_init(boundedbuffer_t *buffer, size_t size);
           int boundedbuffer_put(boundedbuffer_t *buffer, int value);
           int boundedbuffer_get(boundedbuffer_t *buffer, int *value);
           int boundedbuffer_destroy(boundedbuffer_t *buffer);
    
  3. Implemente um animador concorrente para o bounded buffer.
Created by gsd
Last modified 2007-04-23 11:50 PM
« March 2015 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
 
 

Powered by Plone

This site conforms to the following standards: