Jantar dos Filósofos - Programação Paralela
Um programa concorrente especifica dois ou mais processos concorrentes, onde cada um executa um programa sequencial. Tais processos interagem por meio da comunicação, o que traz a necessidade de sincronização. O problema de sincronização mais conhecido é o do "Jantar dos Filósofos". Ele foi proposto por Dijkstra (1965) como um problema clássico de sincronização e possui a seguinte situação: 1) Cinco filósofos estão sentados ao redor de uma mesa circular para o jantar. 2) Cada filósofo possui um prato para comer macarrão. 3) Os filósofos dispõem de hashis e e cada um precisa de 2 hashis para comer. 4) Entre cada par de pratos existe apenas um hashi: Hashis precisam ser compartilhados de forma sincronizada. 5) Os filósofos comem e pensam, alternadamente. Eles não se atém a apenas uma das tarefas. 6) Além disso, quando comem, pegam apenas um hashi por vez: Se conseguir pegar os dois come por alguns instantes e depois larga os hashis. O problema é coordenar o uso dos hashi de maneira que nenhum filósofo fique com fome. Esse problema exemplifica muito bem muitas soluções e muitos problemas encontrados na programação concorrente. Pode facilmente ocorrer o deadlock se cada filósofo pegar o seu hashi da esquerda e se recusar a liberá-lo até ter comido. Pode ocorrer a inanição se dois filósofos conspirarem contra um terceiro. Na solução dada abaixo, é livre de impasse e permite o máximo paralelismo a uma número arbitrário de filósofos. Ela usa um arranjo de estado para controlar se um filsofo está comendo, pensando ou faminto. Um filósofo só pode mudar comer se nenhum de seus vizinhos estiverem comendo. O programa utiliza um arranjo de semáforos, um por filósofo, assim o filósofos famintos podem ser bloqueados se os garfos necessários estiverem ocupados. Comando para compilar no GCC: $ gcc -o jantar_dos_filosofos.o jantar_dos_filosofos.c -pthread Bom estudo.
Por: Uilian Ries
Criando um objeto em Ruby
Um pequeno exemplo de como criar um objeto em ruby.
Por: Luciano Alexandre de Farias Silva
Calcular Broadcast e IPs disponíveis
Fiz esse algoritmo para um projeto da faculdade, ele calcula o broadcast e mostra os IPs disponíveis. Estou começando agora, então ualquer dica será bem vinda.
Por: Lucas de souza montalvão
Contagem de caracteres
Este script é um básico passo para que você possa informar ao visitante de seu site quantos caracteres restam a serem digitados.
Por: Andre Cardoso
Compara igualdade entre arquivos
Comparar igualdade entre arquivos foi uma necessidade que surgiu ao corrigir exercícios de programação enviados pelo Moodle. Busquei por comandos que facilitassem a comparação recursiva de arquivos em uma pasta, mas não achei nada tão específico. Usei o diff, vimdiff, o cmp e o comm, até que resolvi montar o script que segue. O script serviu para mim e espero que a comunidade do VOL faça bom proveito.
Por: Jackson Klarosk
StrLen e StrCat
Um algoritmo simples, implementado em C, que procura fazer o que as funções strlen() e strcat() fazem através da utilização da biblioteca stdlib.h, sem utilização da biblioteca já pronta. Sugestôes de melhora, críticas etc são bem vindas!
Por: Alexandra Silva
Função Ano Bissexto
Um simples script mostrando a estrutura de uma função em C++, função essa que a partir de um ano digitado nos devolve se ele é bissexto ou não.
Por: Luciano Alexandre de Farias Silva
Gerador de PIS/PASEP em Python
Função em Python para gerar um número do PIS/PASEP válido.
Por: danilo
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Maquina modesta - a vez dos navegadores ferrarem o usuario
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor









