Articles of pthreads

Posso obter o pthread.h do Unix para compilar no Windows?

Se eu tentar compilar um programa com #include nele, eu recebo o erro: pthread.h: No such file or directory É possível obter isso para compilar em um ambiente Windows? Eu estou usando o Vista com o mais recente MinGW. Eu não quero usar o Microsoft Windows Services para UNIX versão 3.5 como eu terei que […]

Compartilhar variável de condição e mutex entre processos: o mutex precisa ser bloqueado antes?

Eu preciso de uma pequena ajuda para entender como usar variables ​​de condição em C para resolver um exercício. Aqui está um pequeno exemplo: #include #include #include #include #include #include #include #include #include #include #define OKTOWRITE “/oktowrite” #define MESSAGE “/message” #define MUTEX “/lock” int main(int argc, char** argv) { pthread_cond_t* condition; pthread_mutex_t *mutex; char* message; […]

Usando C / Pthreads: as variables ​​compartilhadas precisam ser voláteis?

Na linguagem de programação C e Pthreads como a biblioteca de threads; as variables ​​/ estruturas que são compartilhadas entre threads precisam ser declaradas como voláteis? Assumindo que eles podem ser protegidos por um bloqueio ou não (barreiras talvez). O padrão POSIX pthread tem alguma opinião sobre isso, isso é dependente do compilador ou nenhum […]

singleton eficiente para thread-safe em C ++

O padrão usual para uma aula de singleton é algo como static Foo &getInst() { static Foo *inst = NULL; if(inst == NULL) inst = new Foo(…); return *inst; } No entanto, entendo que esta solução não é thread-safe, pois 1) o construtor de Foo pode ser chamado mais de uma vez (o que pode […]

pthread: uma instrução printf é impressa duas vezes no encadeamento filho

este é meu primeiro programa pthread, e não tenho idéia do porque a instrução printf é impressa duas vezes no encadeamento filho: int x = 1; void *func(void *p) { x = x + 1; printf(“tid %ld: x is %d\n”, pthread_self(), x); return NULL; } int main(void) { pthread_t tid; pthread_create(&tid, NULL, func, NULL); printf(“main […]

Matar Thread na Biblioteca Pthread

Eu uso pthread_create(&thread1, &attrs, //… , //…); e precisa se alguma condição ocorreu precisa matar esta discussão como matar isso?

Como retornar um valor do encadeamento em C

Eu sou novo em C e gostaria de brincar um pouco com os threads. Gostaria de retornar algum valor de um thread usando pthread_exit() Meu código é o seguinte: #include #include void *myThread() { int ret = 42; pthread_exit(&ret); } int main() { pthread_t tid; void *status; pthread_create(&tid, NULL, myThread, NULL); pthread_join(tid, &status); printf(“%d\n”,*(int*)status); return […]

É possível determinar o segmento segurando um mutex?

Primeiramente, eu uso a biblioteca pthread para escrever o programa C multithreading. Fios sempre pendurados por seus mutexs esperados. Quando eu uso o utilitário strace para encontrar um segmento está no status FUTEX_WAIT , eu quero saber qual thread manter esse mutex no momento. Mas eu não sei como eu poderia fazer isso. Existe algum […]

variável de condição – por que chamar pthread_cond_signal () antes de chamar pthread_cond_wait () é um erro lógico?

Está escrito no tutorial de threads POSIX https://computing.llnl.gov/tutorials/pthreads/ que é um erro lógico. minha pergunta é porque é um erro lógico? No meu programa eu preciso usar esses sinais, no entanto não posso garantir que haverá um thread que estará no estado _cond_wait. Eu tentei testar e nada acontece. Isso pode causar um comportamento inesperado […]

Como obtenho um ID de encadeamento de um pthread_t arbitrário?

Eu tenho um pthread_t e gostaria de alterar sua afinidade de CPU. O problema é que eu estou usando o glibc 2.3.2, que não tem pthread_setaffinity_np () . Tudo bem, no entanto, porque pthread_setaffinity_np () é um wrapper de sched_setaffinity () , que pode ser chamado passando um ID de thread em vez de um […]