多线程程序中,调用int ret = AVIFileOpen( &m_hAVI, filename, OF_CREATE | OF_WRITE, NULL);
答案:2 悬赏:50 手机版
解决时间 2021-03-20 08:36
- 提问者网友:wodetian
- 2021-03-19 19:52
多线程程序中,调用int ret = AVIFileOpen( &m_hAVI, filename, OF_CREATE | OF_WRITE, NULL);
最佳答案
- 五星知识达人网友:行路难
- 2021-03-19 20:30
是同一个文件吗?
同一文件,写打开,是独占模式。追问不同的线程打开的是不同的文件追答你把ret的值打印出来看一下,是什么错误
我按下面测试,没有问题
#include
#include
#include
#include
void thread_proc(void *filename)
{
PAVIFILE m_hAVI;
int ret ;
CoInitialize(NULL);
ret= AVIFileOpen( &m_hAVI, filename, OF_CREATE | OF_WRITE, NULL );
printf("filename=%s,ret=%d ",filename,ret);
_endthread();
}
int main()
{
unsigned pid;
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi1.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi2.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi3.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
return 0;
}
同一文件,写打开,是独占模式。追问不同的线程打开的是不同的文件追答你把ret的值打印出来看一下,是什么错误
我按下面测试,没有问题
#include
#include
#include
#include
void thread_proc(void *filename)
{
PAVIFILE m_hAVI;
int ret ;
CoInitialize(NULL);
ret= AVIFileOpen( &m_hAVI, filename, OF_CREATE | OF_WRITE, NULL );
printf("filename=%s,ret=%d ",filename,ret);
_endthread();
}
int main()
{
unsigned pid;
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi1.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi2.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
_beginthreadex(NULL,0, (unsigned (__stdcall *) (void *))thread_proc, "avi3.avi",0,&pid);
Sleep( 100);
printf("pid =%d\n",pid);
return 0;
}
全部回答
- 1楼网友:怀裏藏嬌
- 2021-03-19 20:42
你要控制好同步,ret的值出错定义是什么? 如果你是多线程 而且打开的file有多个,同时又在不断的进行open close 文件操作,那么你每次打开同一个文件返回的句柄值肯定会不一致了,你那所谓的出错是指ret数值不一致么? 那就是很正常的。追问同样一个线程函数,第一次ret是0,但是第2个线程执行的时候ret不是0,所以错了,我觉得你说的很有道理,应该就是这个原因,那应该怎么改呢?追答我只是搞不明白你要这个ret的值干嘛 他不过是返回一个句柄指针 你只要知道是打开的是哪个文件就可以了 。用不同的句柄名称代表打开的那个文件即可,我不明白你要那个值是做什么,是你描述不清楚还是我理解不行??
ret的值 顶多就是判断他是否==0或者==-1 判断文件打开是否正确 如果是正确的情况下这个值并没什么用途 要用的是他指针啊 管他是2 或者3 或者4
ret的值 顶多就是判断他是否==0或者==-1 判断文件打开是否正确 如果是正确的情况下这个值并没什么用途 要用的是他指针啊 管他是2 或者3 或者4
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯