我很抱歉,如果这是一个错误的地方问这个,但我搜索过,总能找到不同的答案.我的问题是:
哪个更快?缓存或CPU寄存器?
根据我的说法,寄存器是直接加载数据来执行它的,而缓存只是CPU内部或内部的存储位置.
以下是我发现的让我困惑的消息来源:
2缓存| 1用于寄存器
http://in.answers.yahoo.com/question/index?qid=20110503030537AAzmDGp
缓存更快.
http://wiki.answers.com/Q/Is_cache_memory_faster_than_CPU_registers
真的是它呢?
你们中的许多人都知道原来的"send()"不会写入你要求它的字节数.您可以轻松地使用指针和循环来确保所有数据都已发送.
但是,我没有看到WSASend()和完成端口在这种情况下是如何工作的.它会立即返回,您无法控制发送的数量(除了您在例程中有权访问的lpLength).这是如何解决的?
您是否需要多次在例程中调用WSASend()以获取所有数据?这看起来不是一个很大的缺点,特别是如果您希望以特定顺序输出数据并且多个线程访问例程?
为什么没有send()在winsock您请求的所有字节的保证交货?
这是TCP,它是阻塞套接字.
同样,这种情况发生在非阻塞时.你怎么能保证你发送一切?
我注意到recv()了同样的事情.
好吧,我正在尝试处理某种队列.我有一个IO线程,它专门用于从std :: queue中弹出数据,但问题是我正在使用Sleep()以防止100%cpu常量检查.当然还有其他线程会将项添加到std :: queue.
我怎样才能创建一个事件,以便线程处于休眠状态,并且仅在std :: queue不为空时才启动?
IO线程
Sleep(100);
while (!myqueue.empty())
{
//process data FIFO
myqueue.pop(); //pop out and continue
}
Run Code Online (Sandbox Code Playgroud)
非常感谢,谢谢!哦,这对于c ++ 11或c ++ 03来说无关紧要 - 在Windows上.
我认为标题非常具有说明性,但这里有更详细的内容,我正在尝试做什么.基本上说我在内存中加载了BITMAP.
我想从中提取BITMAPINFOHEADER并将其添加到我的数据包结构中,该结构将通过套接字传输.*
转移它不是问题,但一旦它到达我想把它变回BITMAP,以便我可以使用它.
我一直在努力解决这个问题,而且我一直在搜索高低,没有任何运气.我需要完成此示例和函数列表会很有帮助.
非常感谢.我需要在win32 c ++中使用它.[没有.NET或MFC]赞赏.