zoukankan      html  css  js  c++  java
  • 谷歌面试题

      有四个线程1、234。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:

    A1 2 3 4 1 2....

    B2 3 4 1 2 3....

    C3 4 1 2 3 4....

    D4 1 2 3 4 1....

    请设计程序。

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>  
    #include <string>  
    #include <stack>  
    #include <windows.h>  
    #include <process.h>  
    #include <fstream>
    using namespace std;  
    
    HANDLE hThread1;
    HANDLE hThread2;
    HANDLE hThread3;
    HANDLE hThread4;
    
    HANDLE hEvent1;
    HANDLE hEvent2;
    HANDLE hEvent3;
    HANDLE hEvent4;
    
    char filepath[256];
    
    UINT __stdcall ThreadWrite1(LPVOID lParam)
    {
        ofstream * file = (ofstream *)lParam;
        int n = 10;
        while(n--)
        {
            WaitForSingleObject(hEvent1, INFINITE);
            int i = 1;
            *file<<i;
            ResetEvent(hEvent1);
            SetEvent(hEvent2);
        }
        return 1;
    }
    
    UINT __stdcall ThreadWrite2(LPVOID lParam)
    {
        ofstream * file = (ofstream *)lParam;
        int n = 10;
        while(n--)
        {
            WaitForSingleObject(hEvent2, INFINITE);
            int i = 2;
            *file<<i;
            ResetEvent(hEvent2);
            SetEvent(hEvent3);
        }
        return 1;
    }
    
    UINT __stdcall ThreadWrite3(LPVOID lParam)
    {
        ofstream * file = (ofstream *)lParam;
        int n = 10;
        while(n--)
        {
            WaitForSingleObject(hEvent3, INFINITE);
            int i = 3;
            *file<<i;
            ResetEvent(hEvent3);
            SetEvent(hEvent4);
        }
        return 1;
    }
    
    UINT __stdcall ThreadWrite4(LPVOID lParam)
    {
        ofstream * file = (ofstream *)lParam;
        int n = 10;
        while(n--)
        {
            WaitForSingleObject(hEvent4, INFINITE);
            int i = 4;
            *file<<i;
            ResetEvent(hEvent4);
            SetEvent(hEvent1);
        }
        return 1;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        ofstream infile;
        //写文件A.txt
        hEvent1 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent2 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent3 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent4 = CreateEvent(NULL, TRUE, FALSE, NULL);
    
        infile.open("A.txt", ios::binary | ios::app);
        SetEvent(hEvent1);
        hThread1 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite1, &infile, 0, NULL);
        hThread2 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite2, &infile, 0, NULL);
        hThread3 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite3, &infile, 0, NULL);
        hThread4 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite4, &infile, 0, NULL);
        WaitForSingleObject(hThread1, INFINITE);
        WaitForSingleObject(hThread2, INFINITE);
        WaitForSingleObject(hThread3, INFINITE);
        WaitForSingleObject(hThread4, INFINITE);
        infile.close();
        CloseHandle(hEvent1);
        CloseHandle(hEvent2);
        CloseHandle(hEvent3);
        CloseHandle(hEvent4);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        CloseHandle(hThread3);
        CloseHandle(hThread4);
    
        //写文件B.txt
        hEvent1 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent2 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent3 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent4 = CreateEvent(NULL, TRUE, FALSE, NULL);
    
        infile.open("B.txt", ios::binary | ios::app);
        SetEvent(hEvent2);
        hThread1 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite1, &infile, 0, NULL);
        hThread2 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite2, &infile, 0, NULL);
        hThread3 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite3, &infile, 0, NULL);
        hThread4 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite4, &infile, 0, NULL);
        WaitForSingleObject(hThread1, INFINITE);
        WaitForSingleObject(hThread2, INFINITE);
        WaitForSingleObject(hThread3, INFINITE);
        WaitForSingleObject(hThread4, INFINITE);
        infile.close();
        CloseHandle(hEvent1);
        CloseHandle(hEvent2);
        CloseHandle(hEvent3);
        CloseHandle(hEvent4);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        CloseHandle(hThread3);
        CloseHandle(hThread4);
    
        //写文件C.txt
        hEvent1 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent2 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent3 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent4 = CreateEvent(NULL, TRUE, FALSE, NULL);
    
        infile.open("C.txt", ios::binary | ios::app);
        SetEvent(hEvent3);
        hThread1 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite1, &infile, 0, NULL);
        hThread2 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite2, &infile, 0, NULL);
        hThread3 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite3, &infile, 0, NULL);
        hThread4 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite4, &infile, 0, NULL);
        WaitForSingleObject(hThread1, INFINITE);
        WaitForSingleObject(hThread2, INFINITE);
        WaitForSingleObject(hThread3, INFINITE);
        WaitForSingleObject(hThread4, INFINITE);
        infile.close();
        CloseHandle(hEvent1);
        CloseHandle(hEvent2);
        CloseHandle(hEvent3);
        CloseHandle(hEvent4);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        CloseHandle(hThread3);
        CloseHandle(hThread4);
    
        //写文件D.txt
        hEvent1 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent2 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent3 = CreateEvent(NULL, TRUE, FALSE, NULL);
        hEvent4 = CreateEvent(NULL, TRUE, FALSE, NULL);
    
        infile.open("D.txt", ios::binary | ios::app);
        SetEvent(hEvent4);
        hThread1 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite1, &infile, 0, NULL);
        hThread2 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite2, &infile, 0, NULL);
        hThread3 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite3, &infile, 0, NULL);
        hThread4 = (HANDLE)_beginthreadex(NULL, 0, ThreadWrite4, &infile, 0, NULL);
        WaitForSingleObject(hThread1, INFINITE);
        WaitForSingleObject(hThread2, INFINITE);
        WaitForSingleObject(hThread3, INFINITE);
        WaitForSingleObject(hThread4, INFINITE);
        infile.close();
        CloseHandle(hEvent1);
        CloseHandle(hEvent2);
        CloseHandle(hEvent3);
        CloseHandle(hEvent4);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        CloseHandle(hThread3);
        CloseHandle(hThread4);
        return 0;
    }
  • 相关阅读:
    一句话说明分布式与集群的区别以及什么是分布式集群
    docker Unhandled exception: Filesharing has been cancelled
    sqlserver查询数据的所有表名和行数
    docker push失败:denied: requested access to the resource is denied
    windows docker 共享文件权限设置
    ubuntu 16.4 docker 镜像加速
    fastreport 旋转 竖排
    基于Huggingface使用BERT进行文本分类的fine-tuning
    基于Embedding深度学习算法综述
    机器学习基础知识
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/3099811.html
Copyright © 2011-2022 走看看