我在我的应用程序中理解并实现了线程的概念。从现在开始,事情进展顺利。但是我几乎没有问题没有答案,他们现在让我变慢了。如果有人回复他们中的任何一个,我将不胜感激
在Createthread()中,我们只能接受1个参数吗?正如我在MSDN网站上看到的以及我看到的所有其他示例我只看到了一个参数LPVOID。
另一件事是,DWORD WINAPI的返回值是什么意思作为返回值?我们可以只有DWORD,int或任何其他返回类型。我想它与HANDLE(可能是)
我想使用线程的数组,因此我学习了数组到函数,并且(正如我所理解的)线程本身只是一个由CreateThread()例程调用的函数,因此我尝试实现那里的概念却因为返回类型而无法让DWORD WINAPI不允许我这样做?
我有一个用于保存文件的线程,现在我想要它的数组,这样我就可以同时保存多个文件(不是exaclty相同的开始时间,而是保存并行文件)。我怎么能这样做?
由于 单
答案 0 :(得分:2)
void *
类型的一个参数(LPVOID)。
但是,因为它可以指向任何东西,它可以指向struct
或对象(通常由于生命周期原因在堆上分配)。 答案 1 :(得分:0)
对于第三点,我想我理解并会尝试不同的方式。我正在使用
DWORD WINAPI save_uwpi_file0( LPVOID )
{
while(1)
{
if(release == 1 && flag_oper1 == 1)
{
int w_cnt = 0; FILE *opfile;
char fname[30] = "txt_file0.txt";
//opening file for write
opfile = fopen(fname , "w");
printf("assigning memory for file 1 \n");
ssint *Lmem = (ssint *)malloc( sizeof(ssint)*size_of_memory);
memcpy(Lmem, pInDMA, sizeof(ssint)*size_of_memory);
release = 0;
printf("relseaing for second file saving\n");
for( int nbr = 0; nbr < size_of_memory; nbr++){
fprintf(opfile , "%hi\n", Lmem[nbr] );
}
printf("aligned free 1\n");
free(Lmem);
fclose(opfile);
printf("File saved 1\n\n");
return 1;
} //if statement ends
}
}
我正在使用以下命令来指向(线程)函数
DWORD WINAPI (* save_uwpi_file0)(LPVOID);
我想我应该尝试像
这样的东西DWORD (* save_uwpi_file0)(LPVOID);
我会这样做并在此处发布结果