我希望使用for
循环创建5个主题 - 这样的循环,
for(int i=0;i<5;i++){
pthread_create(...., NULL, printHelloWorld, (void *)&i);
}
void printHelloWorld(void *arg){
printf("%d\n", *(int *)arg);
}
//在此代码中
//所以我认为使用数组 - &gt;但使用20byte内存。
//我想使用小于20byte的内存。 你有好主意吗?
答案 0 :(得分:0)
可能你在问,为什么第一个线程从cell.textLabel.text = LocalizedString(@"nice title",nil);
获得的值为1而不是预期的0。
原因是,您将引用传递给i
。对i
的每次更改都会对所有参与其中的人进行更改。您必须为每个线程创建一个副本。
这会导致您的代码出现另一个问题:如果线程的运行时间超过创建代码,则i
将在内存中丢失,并且传递的引用无效。你应该这样做:
i
输入Safari。
for(int i=0;i<5;i++)
{
int *arg = malloc( sizeof int ); // Likely you want to have a bigger structure.
*arg = i;
pthread_create(...., NULL, function, arg );
}
必须在最后释放分配的内存。
function()