⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printserver.cpp

📁 window下的多线程编程参考书。值得一读
💻 CPP
字号:
#include <stdio.h>
#include "CMcl.h"

#define MAX_NUM_REQUESTS            256
#define MAX_REQUEST_SIZE            (MAX_PATH + 1)
#define PRINT_REQUEST_MAILBOX_NAME  __TEXT("MclTestPrintServerMailbox")

class PrintServerHandler : public CMclThreadHandler {
private:
    CMclEvent m_ceStop;
    CMclMailbox m_cmRequests;

public:
    // create the print server thread handler, initialize the
    // mailbox as a member object and also the stop event for
    // shutting the server down...
    PrintServerHandler() : m_cmRequests( MAX_NUM_REQUESTS,  MAX_REQUEST_SIZE, PRINT_REQUEST_MAILBOX_NAME),
                    m_ceStop() {
        return;
    };

    void Stop(void) {
        m_ceStop.Set();
    };

    void PrintFile( LPTSTR lpFilename) {
        printf("Servicing Request to Print File:'%s'...", lpFilename);
        Sleep(1000);
        printf("done.\n");
    
    };

    unsigned ThreadHandlerProc(void) {
        BYTE abRequest[MAX_REQUEST_SIZE];
        while (m_cmRequests.GetAlertable( abRequest, &m_ceStop, INFINITE)) {
            PrintFile((LPTSTR)abRequest);
        }
        return 0;
    };
};

int main(int argc, char *argv[]) {
    PrintServerHandler thPrintServer;
    CMclThreadAutoPtr apPrinterServer;

    // start the print server...
    printf("Print server starting, press <ENTER> to stop.\n");
    apPrinterServer = new CMclThread(&thPrintServer);

    // wait for enter...
    getchar();

    // stop the server...
    thPrintServer.Stop();

    // wait for the printer server to stop...
    apPrinterServer->Wait(INFINITE);

    // all done...
    printf("Print server stopped, exiting.\n");
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -