2010年9月
« 8    
 12345
6789101112
13141516171819
20212223242526
27282930  

windows 7 下加grub for dos启动项

1:先去下载grub4dos
2:解压grldr.mbr,grldr,menu.lst三个文件到C盘根目录,注意是根目录哦!
3:然后以管理员模式运行cmd,输入bcdedit /create /d “grub” /application bootsector
会有一大串id,要记下,等下要用,然后:
4:bcdedit /set {id} device partition=c:
5:bcdedit /set {id} path \grldr.mbr
6:bcdedit /displayorder {id} /addlast

_beginthreadex和CreateThread

[转:http://blog.chinaunix.net/u2/61062/showart_2065921.html]
为什么要用C运行时库的_beginthreadex代替操作系统的CreateThread来创建线程?

来源自自1999年7月MSJ杂志的《Win32 Q&A》栏目
   你也许会说我一直用CreateThread来创建线程,一直都工作得好好的,为什么要用_beginthreadex来代替CreateThread,下面让我来告诉你为什么。
   回答一个问题可以有两种方式,一种是简单的,一种是复杂的。
如果你不愿意看下面的长篇大论,那我可以告诉你简单的答案:_beginthreadex在内部调用了CreateThread,在调用之前_beginthreadex做了很多的工作,从而使得它比CreateThread更安全。
    为什么我们需要两个几乎相同的库来分别对待单线程和多线程程序?说起来也很简单,两个字——效率。让我们从头说起,标准CRT库出现于1970年左右,那时,线程的概念尚未出现在任何一个操作系统上。但是,线程毕竟是出现了,那好,让我们来看看下面这个例子,在这个例子中我们使用了CRT的全局变量 errno:
BOOL fFailure = (system(“NOTEPAD.EXE README.TXT”) == -1);
if (fFailure) {
     switch (errno) {
     case E2BIG: // Argument list or environment too big
         break;
   case ENOENT: // Command interpreter cannot be found
       break;
   case ENOEXEC: // Command interpreter has bad format
       break;
   case ENOMEM: // Insufficient memory to run command
       break;
   }
} [...]

沪ICP备10001285号