操作系统课件实验相关_第1页
操作系统课件实验相关_第2页
操作系统课件实验相关_第3页
操作系统课件实验相关_第4页
操作系统课件实验相关_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

读者写者问题之API函数 CreateThread( DWORDdwStackSize, lpParameter,DWORDdwCreationFlags, LPDWORDlpThreadld);lpThreadAttributesNULL,则句柄不能被继承。在WindowsNT中该结构的lpSecurityDescriptor新进程的句柄创建时设为THREAD_ALL_ACESS权限。若未提供安全性描述符,则该时,将在以前执行检查。若检查,则请求进程不能使用该句柄获得对lpStartAddressDWORD返回值被用ExitThreadGetExitCodeThread函数来获得线程的返CreateRemoteThread函数使得一个新的执行线程从指定进程的地址空间开始执行。该线程可以进程打开的所有对象。新线程的句柄创建时对于新线程具有完全的权限。若未提供安全性描述符,则任何一个权以前执行检查。若检查,则请求进程不能使用该句柄获得对该线程的。即使lpStartAddress指向数据,代码,或不可,CreateRemoteThread函数仍能成功调用。CreateProcessCreateProcess函数中,即使进程了无效的或己丢失的动态连接库(DLL)仍能被创建。线程创建时拥有THREAD_PRIORITY_NORMAL优先权。使用GetThreadPriority一个线程对象始终存在于系统中,直到该线程终止,且它所有的句柄都已通过调用CloseHandleExitProcess,ExitThread,CreateThread,CreateRemoteThread和一个正被启动(CreateProcessDLLDLL初始任一时刻,进程中仅有一个线程可以存在于一个DLL使用C运行时间库函数的线程应当使用CCreateThread和ExitThread函数。若不这样做,调用ExitThreadVOID DWORDdwExitCodedwExitCode:GetExitCodeThread函数来检取一个线程的退返回值:STILL_ACTIVATEdwExitCode参数的值。ExitroessExitTradCeaeTradCateRemoeTeadDLLDLL初始任一时刻,进程中仅有一个线程可以存在于一个DLL使用C运行时间库函数的线程应当使用CCreateThread和ExitThread函数。若不这样做,调用ExitThread函数原型:VOIDSleep(DWORDdwMilliseconds);dwMilliseconds:0时,该线程将余下的时间则函数立即返回,该线程继续执行。若取值为INFINITE则造成无限延迟。使用Sleep函数和直接或间接创建窗口的代码时必须非常。若线程创建了窗口,它就必Sleep函数时使用了无限MsgWaitForMutipleObjectsMsgWaitForMutipleObject函数,Sleep函数。HANDLECreateMutex( BOOLbInitialOwner,LPCTSTRlpName lpMutexAttributes:SECURITY_ATTRIBUTES结构的指针,该结构决定子进程是否能继承lpMutexAttributesNULL,那么句柄不能被继承。WindowsNTlpSecurityDescriptorlpMutexAttributes为NULL么调用线程获得互斥对象所属。否则,调用线程不能获得互斥对象所属。判断调用者是lpName指向以NULL结尾的字符串,该字符串指定了互斥对象名。该名字的长度小于MAX_PATH且可以包含除反斜线路径分隔符(\)以外的任何字符。名字是区分大小写的。权限已存在的对象。在这种情况下,由于参数bInitialOwner己被创建进程所设置,该参数被lpMutexAttributesNULL,它决定句柄是否解除继承,但是其安全描述符成如果lpName与已存在的、信号量、可等待定时器、作业、或者文件映射对象的名字相GetLastErrorERROR_ALREADY_EXISTS,如果函数调用失败,则返回值为NULL。若想获得错误信息,请调用GetLastError函数bInitialOwnerReleaseMutex函数来而发生死锁。然而,线程必须为每一次等待调用一次ReleaseMutex函数来释放该互斥对象。两个或多个进程可以调用CreateMutex来创建同名的互斥对象,第一个进程实际创建互斥对bInitialOwnerFALSE;否则很难确定开始时哪一个进程拥有该互斥对象。CreateMutexlpMutexAttributesCreateProcess函数创建的子进程一个进程可以在调用DuplicateHandle函数时指定互斥对象句柄来创建一个可以被其他进程OpenMutexCreateMutex函数时能指定互斥对象名。hMutex:CreateMutex或OpenMutex得错误信息,请调用GetLastError函数。ReleaseMutex函数。ReleaseMutex函数。 在WndowsNT中,句柄必须有SYNCHRONIZE权限。若想获得的信息,请查StandardAccessRights没有完成,函数也返回。如果dwMilliseconds是0,函数测试对象的状态并立刻返回:如果dwMillseconds是INFINlTE,函数从不超时。1。Changenotification(改变通告);Consoleinput(控制台输入);Event();Job(作业; 当使用等待函数或代码直接或间接创建窗口时一定要如果一个线程创建了任何窗口,DDECOMCoInitialize。因此,如果用户有一个创建窗口的线程,用MsgWaitForMultipleObjects或MsgWaitForMultipleObject函数,而不要用SignalObjectAndWait函数。WaiForMultipleObjects函数当下面条件之一满足时。返回任意一个或全部:指定对函数原型:DWORDWaitForMultipleObjects(DWORDnCount,CONST 指定 1pHandles所指向的数组中的句柄对象数目最大对象句柄数在Windows95中,由DuplicateHandIe函数所创建的其他句柄不能被fWaitAll:指定等待类型。如果为TRUElpHandles指向的数组里的全部对象为信号态时,函dwMilliseconds:bWaitAll参数指定的条件没有满足,函数也返回。如果dwMilliseconds是0,函数测试指定对象的状态并立刻返回。如果dwMillisecondsINFINITE,函数从不超时。WAIT_OBJECT_0到(WAITOBJECT_0+nCount-1)bWaitAllTRUE,那么返回值表bWaitAllFALSEWAIT_OBJECT_0表明引起函数返回的的对象的pHandles数组索引。如果多于一个对象变为信号态,则返回的是数bWaitAllFALSEWAIT_ABANDONED_0表明引起函数返回的放弃互斥对象pHandles数组索引。如果函数调用失败,返回值是WAIT_FAILED。若想获得错误信息,请调用GetLastError函HANDLECreateSemaphore(LONGlInitialCount,LONGlumCount,LPCTSTRlpName 安全属性。如果是NULL lumCount:Semaphore的最大值。这也就是在同一时间内能够锁住semaphore之线程 semaphore。如果成功就传回一个handle,否则传回NULL。不论哪一种情况,GetLastError都回传回一()HANDLEhSemaphore,LONGlReleaseCount,LPLONGlpPreviousCount Semaphorehandle ()ReleaseSemaphore

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论