Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
A programação concorrente é uma técnica essencial para melhorar a eficiência e o desempenho dos sistemas modernos, permitindo que múltiplas tarefas sejam executadas simultaneamente. No ambiente Linux, essa prática é amplamente utilizada em servidores, aplicações de rede e sistemas embarcados, onde a capacidade de realizar várias operações ao mesmo tempo pode ser crucial. Este artigo discutirá a importância da programação concorrente no Linux e fornecerá exemplos práticos de como implementá-la usando threads, processos e outras ferramentas disponíveis no sistema operacional.
Exemplos:
As threads são uma maneira comum de implementar programação concorrente. No Linux, a biblioteca Pthread (POSIX threads) é frequentemente usada para criar e gerenciar threads.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 5
void *PrintHello(void *threadid) {
long tid;
tid = (long)threadid;
printf("Hello World! It's me, thread #%ld!\n", tid);
pthread_exit(NULL);
}
int main(int argc, char *argv[]) {
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0; t<NUM_THREADS; t++){
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
pthread_exit(NULL);
}
gcc -o hello_thread hello_thread.c -pthread
./hello_thread
Outra abordagem para programação concorrente é a utilização de processos. A função fork()
é usada para criar um novo processo, que é uma cópia do processo pai.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork Failed");
return 1;
} else if (pid == 0) {
printf("Child process\n");
} else {
printf("Parent process\n");
}
return 0;
}
gcc -o fork_example fork_example.c
./fork_example
Para tarefas de linha de comando, o GNU Parallel é uma ferramenta poderosa que permite executar comandos em paralelo.
seq 10 | parallel -j 4 echo "Processing number {}"
Este comando processa os números de 1 a 10 em paralelo, utilizando até 4 jobs simultaneamente.