Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不存在线程ID的OpenThread_C++_Windows_Multithreading_Winapi - Fatal编程技术网

C++ 不存在线程ID的OpenThread

C++ 不存在线程ID的OpenThread,c++,windows,multithreading,winapi,C++,Windows,Multithreading,Winapi,比方说,如果我用一个不再存在的线程ID调用,结果得到NULL,我似乎找不到关于GetLastError中错误代码的文档?我在Windows 8计算机上的测试得到的是错误\u无效\u参数而不是预期的错误\u文件没有文档可以告诉您当OpenThread失败时错误代码可能设置为什么。通常,记录此类信息的Win32函数很少。这主要是因为微软不想限制未来的发展。他们不希望开发人员依赖于返回的错误代码。他们希望在将来的版本中能够灵活地改变这种行为。没有文档可以告诉您当OpenThread失败时错误代码可能设

比方说,如果我用一个不再存在的线程ID调用,结果得到NULL,我似乎找不到关于GetLastError中错误代码的文档?我在Windows 8计算机上的测试得到的是
错误\u无效\u参数
而不是预期的
错误\u文件

没有文档可以告诉您当
OpenThread
失败时错误代码可能设置为什么。通常,记录此类信息的Win32函数很少。这主要是因为微软不想限制未来的发展。他们不希望开发人员依赖于返回的错误代码。他们希望在将来的版本中能够灵活地改变这种行为。

没有文档可以告诉您当
OpenThread
失败时错误代码可能设置为什么。通常,记录此类信息的Win32函数很少。这主要是因为微软不想限制未来的发展。他们不希望开发人员依赖于返回的错误代码。他们希望在将来的版本中能够灵活地更改该行为。

在内部,
OpenThread
调用该函数,该函数记录为返回:

STATUS_INVALID_PARAMETER      The thread ID was not found.

在内部,
OpenThread
调用函数,该函数记录为返回:

STATUS_INVALID_PARAMETER      The thread ID was not found.


为什么您希望
错误\u文件\u未找到
?线程不是文件。@RogerRowland:在这种情况下,许多其他MS API返回
ERROR\u file\u not\u FOUND
。这是区分未找到的对象和API的错误输入参数的更好方法。好吧,也许你有一个参数,但函数做函数做的事情-你不能改变它。对我来说,如果它需要一个线程句柄,而你给它传递的不是线程句柄的东西,那么从逻辑上讲,这是一个无效的参数。否?
ERROR\u INVALID\u参数
是这种情况下预期的错误代码。我预期的是
ERROR\u INVALID\u THREAD\u ID
,就像
PostThreadMessage()
报告一样。与其猜测,不如编写一个快速测试,看看
OpenThread()
实际报告了什么。为什么希望
错误文件找不到?线程不是文件。@RogerRowland:在这种情况下,许多其他MS API返回
ERROR\u file\u not\u FOUND
。这是区分未找到的对象和API的错误输入参数的更好方法。好吧,也许你有一个参数,但函数做函数做的事情-你不能改变它。对我来说,如果它需要一个线程句柄,而你给它传递的不是线程句柄的东西,那么从逻辑上讲,这是一个无效的参数。否?
ERROR\u INVALID\u参数
是这种情况下预期的错误代码。我预期的是
ERROR\u INVALID\u THREAD\u ID
,就像
PostThreadMessage()
报告一样。与其猜测,不如编写一个快速测试,看看
OpenThread()
实际报告了什么。发现得不错。谢谢,很好的发现。谢谢。好的,说得好。好奇的是,给定一个线程ID和它的创建时间,我能确定这样的线程是否确实不存在吗?(我没有线程句柄。)对于这个错误代码的模糊性,我不能100%确定。它可能会因为访问被拒绝,或者因为我现在可能不知道的任何其他原因而失败。如果它真的失败了呢?在这种情况下线程会存在,所以我会得到一个假阴性。那又怎样?你还是不能用那根线做任何事?听起来有点像你有随机的线程ID。真正的问题是什么?好的,说得好。好奇的是,给定一个线程ID和它的创建时间,我能确定这样的线程是否确实不存在吗?(我没有线程句柄。)对于这个错误代码的模糊性,我不能100%确定。它可能会因为访问被拒绝,或者因为我现在可能不知道的任何其他原因而失败。如果它真的失败了呢?在这种情况下线程会存在,所以我会得到一个假阴性。那又怎样?你还是不能用那根线做任何事?听起来有点像你有随机的线程ID。真正的问题是什么?