| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 704 人关注过本帖
标题:今天学习多线程有个地方不理解
取消只看楼主 加入收藏
后卿
Rank: 4
来 自:网络
等 级:业余侠客
威 望:1
帖 子:302
专家分:295
注 册:2016-10-22
结帖率:81.71%
收藏
已结贴  问题点数:20 回复次数:0 
今天学习多线程有个地方不理解
程序代码:
#include <windows.h>
#include <process.h>
#include<iostream>
#include<stdio.h>
unsigned WINAPI threadInc(void* arg);
unsigned WINAPI threadDes(void* arg);
HANDLE hEvent;
int main(int argc, char* argv[])
{
    HANDLE Handles[2]{};
    int i;
    hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
       
    Handles[0] = (HANDLE)_beginthreadex(NULL, 0, threadA, NULL, 0,
        NULL);
         
    Handles[1] = (HANDLE)_beginthreadex(NULL, 0, threadB, NULL, 0,
                NULL);
     
    WaitForMultipleObjects(2, Handles, TRUE, INFINITE);
    CloseHandle(hEvent);
    system("pause");
    return 0;
}
unsigned WINAPI threadA(void* arg)
{
    for (int j=0;j<2;j++)
    {
        int i;
        std::cout << "我是猪" << std::endl;
        WaitForSingleObject(hEvent, INFINITE);
        for (int i = 0; i < 2; i++)
        {
            std::cout << "我是猪22" << std::endl;
        }
        SetEvent(hEvent);
    }    
    return 0;
}
unsigned WINAPI threadB(void* arg)
{
    for (int j=0;j<2;j++)
    {
        int i;
        std::cout << "woshizhu" << std::endl;
        WaitForSingleObject(hEvent, INFINITE);
        for (int i = 0; i < 2; i++)
        {
            std::cout << "woshizhu33" << std::endl;
        }
         SetEvent(hEvent);
    }
    return 0;
}

遇到了4个问题,
1.将hEvent 设置为有信号状态,随机进入线程A,打印“我是x”,接下来有没有可能连续打印两次中文“我是x22”呢?
2.再连续打印两次中文“我是X22"后,SetEvent,然后,因为自己发出的SetEvent不作用于自己,所以会进入线程B,那这个时候会跳到waitfor那一行呢?还是会跳到线程B里的打印英文”woshix“那一行(后面没有33)
3.按照2的逻辑,线程A结束后不会再次执行线程A,但为什么会有这样的结果,连续打印了两次线程A
woshizhu
woshizhu33
woshizhu33
woshizhu

woshizhu33
woshizhu33
图片附件: 游客没有浏览图片的权限,请 登录注册


4.为什么打印结果有一行空着呢?我只写了个换行,是打印结果后换行,而不是让它换整个空行


[此贴子已经被作者于2023-5-25 10:02编辑过]

搜索更多相关主题的帖子: 线程 打印 std NULL int 
2023-05-25 10:01
快速回复:今天学习多线程有个地方不理解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013681 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved