【发布时间】:2015-12-01 12:25:52
【问题描述】:
我有一个带有两个 pthread 的程序。
每个节点上都有一个全局变量List,用于保存(char *)。
在主线程中,我声明、malloc 并初始化一个 (char *) 并将其加入到全局列表中。
第二个线程无限循环等待全局列表中的新节点被消耗。
问题是第二个线程似乎无法使用第一个线程构建的 (char *),因为第一个线程已经返回,所以 (char *) 可能已被释放。
有什么建议吗?
谢谢。
【问题讨论】:
-
请创建一个 MCVE:stackoverflow.com/help/mcve
-
你使用的是什么
List实现? -
我正在使用这个 List 实现:github.com/SchedMD/slurm/blob/master/src/common/list.c
-
这个问题是关于运行时问题。因此,干净编译、简短且显示问题的后代码。发布预期和实际产出。发布实际输入。否则我们只能猜测。发布您的代码,而不是其他人代码的链接
-
该问题表示一个非常简单的问题。引用的代码包含许多不良的编程实践,例如给函数名起别名,通过宏编写函数定义,以及.....您的代码需要做的就是; 1)定义节点 2)声明“头”指针 3)附加节点 4)删除第一个节点 5)检查“头”指针是否包含 NULL(空列表)并用数据“填充”节点。您可能希望使用 `pthread_mutex...() 函数在线程之间进行协调。
标签: c variables scope pthreads