操作系统上机实验二
实验二 线程共享进程中的数据
【实验软硬件环境】
Linux、Win11、GCC
【实验目的与内容】
了解线程和进程之间的数据共享关系。创建 一个线程,在线程中更改进程中的数据
在进程中定义全局共享数据,在线程中直接引用该数据进行更改并输出该数据
【实验程序及分析】
Windows系统下
father.cpp文件代码
1 |
|
代码分析
创建线程
HANDLE hEvent = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
1
2
3
4
5
6
7HANDLE WINAPI CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId );lpThreadAttributes
:表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。dwStackSize
:表示线程栈空间大小。传入0表示使用默认大小(1MB)。lpStartAddress
:表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。lpParameter
:是传给线程函数的参数。dwCreationFlags
:指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。lpThreadId
:将返回线程的ID号,传入NULL表示不需要返回该线程ID号。DWORD类型线程创建成功返回新线程的句柄 HANDLE 类型
线程函数
DWORD WINAPI ThreadProc(LPVOID IpParameter)
线程函数的规范格式、函数名称(上为ThreadProc)没有限制
获取当前线程ID
GetCurrentThreadId()
【实验截图】
【实验心得体会】
掌握了创建线程,大大提升了程序的运行效率
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 j52nnw9的博客!