Articles of pthreads

sem_init no OS X

Eu estou trabalhando em algum código que usa as bibliotecas pthread e semáforo. A function sem_init funciona bem na minha máquina Ubuntu, mas no OS X a function sem_init não tem absolutamente nenhum efeito. Há algo de errado com a biblioteca ou há uma maneira diferente de fazê-lo? Este é o código que estou usando […]

Referência indefinida para ‘pthread_create’ – ordem de opção do comando linker (bibliotecas antes / depois dos arquivos de objects?)

Quando tento compilar isso, recebo um erro específico. Mas não é possível porque uso a bandeira certa. No server.c existe a biblioteca pthread.h . Então, como posso resolver meu problema de vinculação? Estou usando o Linux (Ubuntu). make gcc -c -Wall -Wunused -ansi -pedantic -ggdb -o Server1.o Server.c gcc -c -Wall -Wunused -ansi -pedantic -ggdb […]

A proteção de uma variável com uma garantia mutex pthread também não é armazenada em cache?

Considere uma variável simples (global no meu caso): int i; Em algum lugar esta variável é acessada pthread_mutex_lock(i_mutex); if(i == other value) { do_something(); } pthread_mutex_unlock(i_mutex); Outro thread atualiza enquanto mantém o i_mutex . O compilador poderia armazenar em cache o valor de i para que eu não obtivesse o valor recente? i devo ser […]

Como aumentar a prioridade do thread em pthreads?

Eu estou usando o pthread no Linux. Eu gostaria de aumentar a prioridade do thread, definindo os parâmetros sched_param.priority . No entanto, não consegui encontrar muita informação da rede em relação ao intervalo da prioridade do encadeamento que eu poderia definir ou sobre a descrição da prioridade do encadeamento. Além disso, eu gostaria de saber […]

Qual é o bloqueio e o conceito de reentrância em geral?

Eu sempre fico confuso. Alguém poderia explicar o que Reentrant significa em diferentes contextos? E por que você quer usar reinput versus não-reentrante? Diga primitivas de bloqueio pthread (posix), elas são reentrantes ou não? Quais armadilhas devem ser evitadas ao usá-las? O mutex é reentrante?

Chamada de API POSIX para listar todos os pthreads em execução em um processo

Eu tenho um aplicativo multi-threaded em um ambiente POSIX / Linux – Eu não tenho controle sobre o código que cria os pthreads. Em algum momento, o processo – proprietário dos pthreads – recebe um sinal. O manipulador desse sinal deve abortar, cancelar ou parar todos os pthreads e registrar quantos pthreads estão sendo executados. […]

Vários argumentos para funcionar chamado por pthread_create ()?

Eu preciso passar vários argumentos para uma function que gostaria de chamar em um segmento separado. Eu li que a maneira típica de fazer isso é definir uma estrutura, passar a function um ponteiro para isso e desreferencia-la para os argumentos. No entanto, não consigo fazer isso funcionar: #include #include struct arg_struct { int arg1; […]

Por que o pthread_cond_wait tem ativações espúrias?

Para citar a página man: Ao usar variables ​​de condição, sempre há um predicado booleano envolvendo variables ​​compartilhadas associadas a cada condição de espera que é verdadeira se o encadeamento deve continuar. Os despertares espúrios das funções pthread_cond_timedwait () ou pthread_cond_wait () podem ocorrer. Como o retorno de pthread_cond_timedwait () ou pthread_cond_wait () não implica […]

Linha de ativação bloqueada na chamada accept ()

Sockets na questão do Linux Eu tenho um segmento de trabalho que está bloqueado em uma chamada accept (). Ele simplesmente espera por uma conexão de rede de input, lida com ela e retorna para a próxima conexão. Quando é hora de o programa sair, como faço para sinalizar esse thread de trabalho de rede […]

Segmentos e sinais POSIX

Eu tenho tentado entender as complexidades de como threads POSIX e sinais POSIX interagem. Em particular, estou interessado em: Qual é a melhor maneira de controlar a qual thread um sinal é entregue (assumindo que não é fatal em primeiro lugar)? Qual é a melhor maneira de dizer a outro segmento (que pode estar ocupado) […]