【发布时间】:2015-12-10 20:18:11
【问题描述】:
我有一个回调函数正在我需要的地方写:
1 创建一个结构
2 创建一个新线程并将此结构传递给线程以供其独占使用
3 从回调函数中返回一个指向这个结构体的指针……到主程序。
这将允许原始程序和新线程之间通过共享内存进行通信。
我假设我必须使用 malloc,因为在回调函数中创建的结构的范围仅在函数中。
我无法将其设为静态,因为我将创建多个线程,每个线程都有自己的个人结构。
我是新手,需要了解流程。
这样可以吗?
1 malloc 一块内存“sizeof”结构。
2 将指向该块的指针传递给新线程并将其返回给主程序。
3 一次在新线程中使用此内存创建一个新结构?
我现在已经搜索了一周,看不出应该怎么做。
顺便说一句:我无法修改设计为单线程的主程序。 我只能使这个回调函数产生许多新线程之一,并通过我想成为一个结构的这个共享内存进行通信。
谢谢。
struct myStruct
{
int elem1;
int elem2;
int elem3;
};
int* callBack(some parameters)
{
*p = malloc(sizeof(myStruct));
result = pthead_create( ??, ??, void *(*newThread), *p);
return p;
}
void newThread()
{
// pull off *p from stack?
// somehow use the declared struct to access the malloc mem
p->elem1 = p->elem2 + p->elem3;
}
【问题讨论】:
-
我很困惑。你想要堆(分配)内存还是想要共享内存(如果你需要共享内存,为什么?)
-
我想要任何有用的东西。我所看到的都是 malloc 示例,所以我认为这就是我想要的?
标签: c multithreading pthreads