Skip to content

guiopen/parallel-bulk-editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Editor de Imagens em Lote Paralelo

Processador paralelo de imagens, feito em C, que aplica filtros em múltiplas imagens simultaneamente, utilizando threads.

Interface

Ao iniciar, o usuário deve informar:

  • Diretório de entrada com as imagens (em formatos JPG/JPEG ou PNG)
  • Número de threads para processamento
  • Filtro a ser aplicado (grayscale, red, green, blue ou invert)

Após o término do processamento, é possível verificar as cópias processadas das imagens em um novo diretório ./<DIR_ORIGINAL>_<FILTRO>. Além disso, o programa fornece dados da quantidade de imagens tratadas e tempo decorrido na operação, permitindo também aplicar outros filtros sequencialmente sobre o diretório original.

Ao optar por "sair", são exibidas estatísticas com medições acumuladas de:

  • Imagens (considerando todos filtros utilizados)
  • Tempo total
  • Velocidade média (imagens/segundo)

Compilação e Execução

É usado Makefile para reunir a compilação de todos arquivos .c em um único executável binário. Para tanto rode o comando:

make

E execute com:

./bin/editor

Padrões de Projeto

Multithreading

1. Pool de Threads

As threads são criadas de acordo com a quantidade definida pelo usuário:

  • Cada thread obtém uma imagem da fila compartilhada, processa, e repete
  • Quando a fila esvazia, são suspensas (não destruídas)
  • Ao selecionar um novo filtro, são reativadas

2. Suspensão Controlada

Está presente nos casos:

  • Threads trabalhadoras são suspensas quando a fila esvazia, acordando somente quando um novo filtro é selecionado
  • Thread principal é suspensa enquanto as trabalhadoras processam

Estruturas de Sincronização

1. Mutex (pthread_mutex_t)

Protege o acesso à fila compartilhada (state.queue) de imagens e aos contadores:

  • current: próxima imagem a ser processada
  • processed: quantidade de imagens já processadas
  • should_exit: flag para encerramento das threads

2. Variáveis de Condição (pthread_cond_t)

  1. done_cond para a espera da thread principal durante o processamento
  2. queue_cond para a espera das threads trabalhadoras quando a fila esvazia

About

An university project to explore parallelism paradigms and synchronization structures.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors