Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como Implementar Programação Concorrente no Linux

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:

Usando Threads com a Biblioteca Pthread

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.

Exemplo de Código em C

#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);
}

Compilando e Executando o Código

gcc -o hello_thread hello_thread.c -pthread
./hello_thread

Usando Processos com fork()

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.

Exemplo de Código em C

#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;
}

Compilando e Executando o Código

gcc -o fork_example fork_example.c
./fork_example

Usando GNU Parallel

Para tarefas de linha de comando, o GNU Parallel é uma ferramenta poderosa que permite executar comandos em paralelo.

Exemplo de Uso

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.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.