- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统》北大教学教案讲义11实习1读者写者问题.doc
密酉宿御题之api m:
下面是本实习所涉及到的主要的API函数:
CreateThread
函数功能:该函数创建一个在调用进程的地址空间中执行的线程。
函数原型:
HANDLE CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize, LPTHREAD_START_ROUTINE IpStartAddress,
LPVOID IpParameter, DWORD dwCreationFlags, LPDWORD lpThreadld); 参数:
lpThreadAttributes:指向——个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否 可被子进程继承。若IpThreadAttributes为NULL,则句柄不能被继承。
在Windows NT中该结构的IpSecurityDescriptor成员定义了新进程的安全性描述符。若 IpThreadAttributes为NULL,则线程获得一个缺省的安全性描述符。
dwStackSize: 义原始堆栈提交时的大小(按字节计)。系统将该值舍入为最近的页。若该值为0, 或小于缺省吋提交的大小,缺省情况是使用与调用线程同样的大小。更多的信息,请看线程堆栈 大小。
IpStarAddress:指向一个LPTHREAD_START_ROUTINE类型的应用定义的函数,该线程执行此 函数。该指针还表示远程进程屮线程的起始地址。该函数必须存在于远程进程屮。
IpParameter: /E义一个传递给该进程的32位值。
dwCreationFla那 定义控制进稈创建的附加标志。若定义了 CREATE_SUSPENDED标志,线程 创建时处于挂起状态,并且直到ResumeThread函数调用时才能运行。若该值为0,则该线程在创 建后立即执行。
lpThreadld:指向一个32位值,它接受该线程的标识符。
返回值:
若函数调用成功,返回值为新线程的句柄;若函数调用失败,返回值为NULL。
备注:
新进程的句柄创建时设为THREAD_ALL_ACESS访问权限。若未提供安全性描述符,则该 句柄可被任何要求一个线程对象句柄的函数所使用。若提供了安全性描述符,则以后使用该句柄 时,将在授权访问以前执行访问检查。若访问检查拒绝访问,则请求进程不能使用该句柄获得对 该线程的访问。
线程从IpStartAddress参数定义的函数处开始执行。若该函数返回,则DWORD返回值被用 于以隐含调用ExitThread函数的方法终止该线程。使用GetExitCodeThread函数来获得线程的返 回值。
CreateRemoteThread函数使得一个新的执行线程从指定进程的地址空间开始执行。该线程可 以访问进程打开的所有对象。
新线程的句柄创建时对于新线程具有完全访问的权限。若未提供安全性描述符,则任何一个 需要线
程对象句柄的函数均可使用该句柄。若提供了一个安全性描述符,则以后使用该句柄时,将在授 权访问
以前执行访问检查。若访问检查拒绝访问,则请求进程不能使用该句柄获得对该线程的访问。 即使IpStartAddress指向数据,代码,或不可访问,CreateRemoteThread函数仍能成功调用。 若线程运行时起始地址无效,则发生异常,线程终止。rfl于无效的起始地址而终止的线程被处理 为“从该线程的进程屮错误退出”。此种行为类似于CreateProcess的异步特性。在CreateProcess 函数中,即使进程引用了无效的或己丢失的动态连接库(DLL)仍能被创建。
线程创建时拥有 THREAD_PRIORITY_NORMAL 优先权。使用 GetThreadPriority 和 SetThreadPriority函数可以获得和设置线程的优先权值。
—个线程终止吋,该线程对象被设为发信号状态,以满足在该对象上等待的所有进程。
一个线程对象始终存在于系统屮,直到该线程终止,且它所有的句柄都已通过调用 CloseHandle函数关闭。
ExitProcess,ExitThread,CreateThread,CreateRemoteThread 和一个止被启动(调用 CreateProcess 的结果)的进程将被在进程内部彼此串联起来。任一时刻,在某一地址空间屮仅能发生上述事件之 一。这意味着将有如下的限制:
在进程启动和DLL初始化例程期间,可以创建新线程,但是新线程只有在进程的DLL初始 化完成后才开始执行。
任一时刻,进程屮仅有一个线程可以存在于一个DLL初始化例程或一个分离例程中。
仅当所有线程的DLL初始化例程和分离例程都已完成时,ExitProcess函数才返冋。
使用C运行时间库函
您可能关注的文档
最近下载
- 北京百师联盟信息技术研究院.doc
- 2.6《观察与比较》教学设计-2024-2025学年一年级上册科学教科版.docx VIP
- 人教版道德与法治二年级上册《这些是大家的》课件.pptx
- 中国特色大国外交和推动构建人类命运共同体.pptx
- 《产品质量鉴定程序规范 总则》.doc VIP
- 七年级数学(沪教版)上册课件-【第2课时 添括号】.pptx
- The Catcher int heRye麦田守望者英文版.doc
- 农药登记残留试验待测残留物和植物源性食品膳食风险评估残留物目录(2020版).docx
- 甲醇羰基化法制备醋酸.pptx
- 超星网课尔雅《走近核科学技术》超星尔雅答案2023章节测验答案.pdf
文档评论(0)