Tag: pthreads

在OS X上的sem_init

我正在使用pthread和semaphore库的一些代码。 sem_init函数在我的Ubuntu机器上工作正常,但在OS X上,sem_init函数完全没有影响。 图书馆有什么问题,或者有不同的方法吗? 这是我用来testing的代码。 sem_t sem1; sem_t sem2; sem_t sem3; sem_t sem4; sem_t sem5; sem_t sem6; sem_init(&sem1, 1, 1); sem_init(&sem2, 1, 2); sem_init(&sem3, 1, 3); sem_init(&sem4, 1, 4); sem_init(&sem5, 1, 5); sem_init(&sem6, 1, 6); 这些值似乎是随机数,并且在sem_init调用之后它们不会更改。

未定义的引用'pthread_create' – 链接器命令选项顺序(库之前/之后的对象文件?)

当我尝试编译时,我收到一个特定的错误。 但是,这是不可能的,因为我使用正确的标志。 在server.c有库pthread.h 。 那么,我该如何解决我的链接问题呢? 我正在使用Linux(Ubuntu)。 make gcc -c -Wall -Wunused -ansi -pedantic -ggdb -o Server1.o Server.c gcc -c -Wall -Wunused -ansi -pedantic -ggdb Util.c gcc -o Server1.exe -Wall -Wunused -ansi -pedantic -ggdb -lpthread -lm Server1.o Util.o Server1.o: In function `main': /home/ruggero/ruggero_fine/Server.c:1002: undefined reference to `pthread_create' collect2: ld returned 1 exit status make: *** [Server1.exe] […]

用pthread mutex守护一个variables是否保证它也没有被caching?

考虑一个简单的(全局在我的情况下)variables: int i; 在某个地方访问这个variables pthread_mutex_lock(i_mutex); if(i == other value) { do_something(); } pthread_mutex_unlock(i_mutex); 另一个线程更新i而它拥有i_mutex 。 编译器可以cachingi的值,所以我没有得到最近的值? i必须变动吗?

什么是重入锁和概念?

我总是感到困惑。 有人会解释不同情况下的折返意味着什么? 你为什么要使用可重入和不可重入? 说pthread(posix)locking原语,他们是否重入? 使用它们应该避免哪些缺陷? 互斥体是否可重入?

cmake和libpthread

我正在运行RHEL 5.1并使用gcc 。 我如何告诉cmake添加-pthread编译和链接?

函数调用pthread_create()的多个参数?

我需要传递多个参数到一个函数,我想调用一个单独的线程。 我读过这样做的典型方法是定义一个结构,传递一个指向该函数的函数,并将其解引用为参数。 但是,我无法得到这个工作: #include <stdio.h> #include <pthread.h> struct arg_struct { int arg1; int arg2; }; void *print_the_arguments(void *arguments) { struct arg_struct *args = (struct arg_struct *)args; printf("%d\n", args -> arg1); printf("%d\n", args -> arg2); pthread_exit(NULL); return NULL; } int main() { pthread_t some_thread; struct arg_struct args; args.arg1 = 5; args.arg2 = 7; if (pthread_create(&some_thread, NULL, […]

-pthread和-lpthread在编译时的区别

编译multithreading程序时使用的gcc -pthread和gcc -lpthread有什么区别?

Valgrind检测到仍然可达泄漏

所有在这个块中提到的函数都是库函数。 我该如何纠正这个内存泄漏? 它列在“ 可到达 ”类别下。 (还有4个,非常相似,但大小不一) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: calloc (vg_replace_malloc.c:418) by 0x931CD2: _dl_new_object (dl-object.c:52) by 0x92DD36: _dl_map_object_from_fd (dl-load.c:972) by 0x92EFB6: _dl_map_object (dl-load.c:2251) by 0x939F1B: dl_open_worker (dl-open.c:255) by 0x935965: _dl_catch_error (dl-error.c:178) by 0x9399C5: _dl_open (dl-open.c:584) by 0xA64E31: do_dlopen (dl-libc.c:86) by 0x935965: _dl_catch_error […]

在Linux中未定义的对pthread_create的引用

我从https://computing.llnl.gov/tutorials/pthreads/下载了以下演示。 #include <pthread.h> #include <stdio.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); […]

-pthread标志在编译时的意义

在各种multithreading的C和C ++项目中,我已经看到了-pthread标志应用于编译和链接阶段,而其他标志完全不使用它,只是将-lpthread传递给链接阶段。 有没有编译和链接与-pthread标志的任何危险 – 即-pthread实际上做什么? 我主要对Linux平台感兴趣。