|
![]() | 作者: LinuxBoy [yearl]
![]() |
登录 |
VC++单步调试时出现: CFile exception: generic, File Unknown, OS error information = 10054. 程序就退出了。 什么意思? |
地主 发表时间: 05/02 23:19 |
![]() | 回复: 286 [unique] ![]() |
登录 |
操作系统错误码10054的内容是:远程主机强迫关闭了一个现有的连接。 可能是你打开的文件名格式有误吧. 注意在C/C++语言中表示路径的"\"要用"\\"表示. |
B1层 发表时间: 05/04 09:22 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
这是一个多线程的程序。 少几个线程时,程序没有问题,运行良好。可是线程一多就出现了上述情况。请问这是为什么? |
B2层 发表时间: 05/04 21:16 |
![]() | 回复: 286 [unique] ![]() |
登录 |
可能是你每个线程都打开同一个文件,但系统设定同时打开文件个数小于你的线程数.而你在打开的时候没有进行判断是否成功打开. 建议你加上是否成功打开的判断,如打开不成功,稍后再打.如果还不行,把打开文件那部分设为临界区或互斥,再试试. |
B3层 发表时间: 05/05 09:13 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
我是在主进程中打开文件的。 我打算让各个线程不断地一个接一个地向后读同一个文件,因此就是这样: g_cs.Lock (); fin.getline(szIn,300,'\n'); g_cs.Unlock (); |
B4层 发表时间: 05/06 22:21 |
![]() | 回复: ricky [ricky] ![]() |
登录 |
你这样写是不行的,要先判断该文件是否已被别的线程锁定 |
B5层 发表时间: 05/07 08:58 |
![]() | 回复: 286 [unique] ![]() |
登录 |
g_cs.Lock (); fin.open("test.txt"); fin.getline(szIn,300,'\n'); fin.close(); g_cs.Unlock (); |
B6层 发表时间: 05/07 09:21 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
我不要再次打开文件。 我要每个线程顺序向后读文件,同一个文件。每次一行。 |
B7层 发表时间: 05/07 22:24 |
![]() | 回复: 286 [unique] ![]() |
登录 |
如果只为读一行,你可以把这行内容作为线程的参数传给线程,让其处理。 按你的实现,你的fin从何而来? 你的文件指针不打开,就读,怎么可能? 要知道一个线程其实就象一个单独的程序,即使是主线程打开的,其它线程也没法读。就象记事本打开的文件,WORD凭什么对其处理呢? |
B8层 发表时间: 05/08 09:11 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
我用的是全局文件指针。线程少时确实可以运行无误。 我要实现的是各个线程顺序不断地向后读同一个文件(其实是密码字典)的各行。 [此贴被 LinuxBoy(yearl) 在 05月08日23时13分 编辑过] |
B9层 发表时间: 05/08 23:17 |
![]() | 回复: 286 [unique] ![]() |
登录 |
如果那样,那可能就象和尚说的.某个线程读的时候,另一线程把文件给锁定了. |
B10层 发表时间: 05/09 09:09 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
线程把文件给锁定.那他总要释放啊。 |
B11层 发表时间: 05/09 22:43 |
![]() | 回复: 286 [unique] ![]() |
登录 |
当一个线程锁定时,另一个线程读就读不成.于是就报错了.虽然此后前一线程又释放了锁定. 对于micro$oft的东东,何必非要问个所以然,上面不是给你提了两个建议吗? 取一个就行了. |
B12层 发表时间: 05/10 10:49 |
![]() | 回复: LinuxBoy [yearl] ![]() |
登录 |
和尚可不可以给一段示范代码? |
B13层 发表时间: 05/17 00:02 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号