相关疑难解决方法(0)

如何打印pthread_t

搜索过,但没有遇到令人满意的答案.

我知道没有一种可移植的方式来打印pthread_t.

你是如何在你的应用程序中做到的?

更新:

其实我不需要pthread_t,而是一些小的数字id,在调试消息中识别不同的线程.

在我的系统(64位RHEL 5.3)上,它被定义为unsigned long int,因此它是大数字,只是打印它在调试行中占有一席之地.gdb如何分配短时间?

c c++ linux pthreads

50
推荐指数
4
解决办法
10万
查看次数

为什么 pthread_join 不接受线程指针?

非常不言自明的问题。例如,pthread_create 的标头显示它需要一个指向线程的指针:

int WINPTHREAD_API pthread_create(pthread_t *th, const pthread_attr_t *attr, void *(* func)(void *), void *arg);
Run Code Online (Sandbox Code Playgroud)

好的,有道理,您在内存中分配一个 pthread,然后传递一个指向 pthread_create 的指针,以便它被初始化......但现在查看 pthread_join 的标头:

int WINPTHREAD_API pthread_join(pthread_t t, void **res);
Run Code Online (Sandbox Code Playgroud)

它需要 pthread_t 的副本。我只是不明白为什么它不使用指向已经存在的线程的指针,而不是复制它并传递它;似乎这样做会导致更多问题和更多内存使用。我错过了什么吗?我阅读了联机帮助页,它似乎没有提供这样做的原因。

c c++ linux pthreads

6
推荐指数
1
解决办法
471
查看次数

标签 统计

c ×2

c++ ×2

linux ×2

pthreads ×2