我希望工作线程将用户定义的消息发送到UI线程消息队列,但我不确定是否应该使用WM_USER或WM_APP.文档WM_APP说:
WM_APP到0xBFFF
可供应用程序使用的消息.
我应该使用WM_APP吗?
我已经打电话WSARecv()回来了WSA_IO_PENDING.然后我RST从另一端发送了一个数据包.GetQueuedCompletionStatus()存在于另一个线程中的函数已FALSE按预期返回,但是当我调用时,WSAGetLastError()我得到了64而不是WSAECONNRESET.
那为什么WSAGetLastError()不回来WSAECONNRESET?
编辑:
我忘了提到当我WSAGetLastError()在失败后直接调用时WSARecv()(由于RST收到了数据包),返回的错误代码是WSAECONNRESET和不是64.
所以看起来返回的错误代码取决于在WSARecv()调用它之后是否直接失败,或者在检索完成数据包之后失败.
我有以下代码:
int main()
{
char str[] = "Hello\n";
write(0, str, 6); // write() to STDIN
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我编译并执行这个程序时,"Hello"在终端中打印出来.
为什么它工作,用(STDOUT)write()替换了我的0(STDIN)参数1?
如果我有一个socket被调用的s,我可以在不同的线程中执行此操作:
主题 1:
send(s, "Hello from Thread 1");
Run Code Online (Sandbox Code Playgroud)
话题2:
send(s, "Hello from Thread 2");
Run Code Online (Sandbox Code Playgroud)
是否保证这两个字符串将一个接一个地放置在发送缓冲区中(我不关心哪个字符串先放置),或者它们是否有可能混合在一起?
注意:也许这个问题的标题应该是:“socket send() 线程安全吗”(但我不太确定线程安全意味着什么)。
假设我们有一个interface叫做Animal有所谓的两种方法move()和makeSound()。
这意味着我们可以发送消息move()和makeSound()类型的变量Animal,并且我们只能将实现的类的对象分配给Animal类型的变量Animal。
现在我的问题是,Java 是否可以不强制想要使用多态的类来实现interface?
例如,为什么 Java 没有像下面这样实现多态:
我们只需创建一个Animal interface,然后我们就可以将我们想要的任何对象分配给一个类型的变量,Animal只要该对象具有方法move()and makeSound(),例如:
Animal animal1;
/* The Java compiler will check if Dog have the methods move() and makeSound(), if yes then
compile, if no then show a compilation error */
animal1 = new Dog();
animal1.move();
animal1.makeSound();
Run Code Online (Sandbox Code Playgroud)
注意:我以 Java 为例,但我一般是在谈论所有 OOP 语言。另外,我知道我们可以使用继承自超类的子类来实现多态(但这与使用 的想法基本相同interface)。
我正在读很多负面的东西strtok(),有人说它已经过时了,有人说它不是线程安全的等等.
那么真相是什么,我可以使用strtok()吗?它是线程安全的吗?
注意:我使用的是Visual C++.
CreateIoCompletionPort()用于将套接字与完成端口相关联.但是,当这个套接字关闭时,我需要从完成端口"取消关联"它.我怎样才能做到这一点?
x86中的“常规”寄存器只有32位大小,因此您不能使用它们将两个64位整数相加(除非您分步进行加法操作)。
但是,您可以使用另一种方式(例如使用SSE)以本机方式添加两个64位整数吗?
“ i486”是指Intel 80486(因为80486以486结尾)。
但是,为什么“ i586”是指奔腾1,为什么“ i686”是指奔腾Pro?
我需要知道使用IOCP时的错误代码WSASend()和WSARecv()(除外WSA_IO_PENDING)是否表示套接字已断开连接.大多数错误代码都很明显,但我不确定以下内容:
错误代码WSASend():
WSAEINPROGRESSWSAENOBUFSWSA_OPERATION_ABORTED错误代码WSARecv():
WSAEFAULTWSAEINPROGRESS 我正在学习C#中的编码,我不明白为什么ASCIIEncoding.GetBytes()没有定义为静态方法,我的意思是为什么有必要创建一个ASCIIEncoding实例来使用它!