我听说i ++不是一个线程安全的语句,因为在汇编时它减少了将原始值存储为某个地方的temp,递增它,然后替换它,这可能被上下文切换中断.
但是,我想知道++ i.据我所知,这将减少为单个汇编指令,例如'add r1,r1,1',因为它只有一条指令,所以它不会被上下文切换中断.
任何人都可以澄清吗?我假设正在使用x86平台.
我一次又一次地发现自己做了一些中度愚蠢的事情,导致我的程序分配了它可以获得的所有内存,然后是一些.
这种事情曾经导致程序因"内存不足"错误而很快死亡,但是现在Windows会不顾一切地将这种不存在的内存提供给应用程序,事实上显然已经准备好自杀这样做.当然不是字面意思,但它会使可用的物理RAM匮乏如此严重,甚至运行任务管理器将需要半小时的交换(在所有失控的应用程序仍在分配越来越多的内存之后).
这种情况不会经常发生,但是当它发生时却是灾难性的.我通常不得不重置我的机器,导致数据不时丢失并且通常会带来很多不便.
你是否有任何关于使这种错误的后果不那么可怕的实用建议?也许某些注册表调整限制允许应用程序分配的最大虚拟内存量?或者某些CLR标志仅限于当前应用程序?(我通常在.NET中对自己这样做.)
("不要耗尽RAM"和"购买更多RAM"是没有用的 - 前者我无法控制,后者我已经完成了.)