c++ - 在 C++ 控制台应用程序中运行两个线程

标签 c++ multithreading

我在创建使用 while 循环的 C++ 应用程序时遇到问题。

int checkIP(const char *IP)
{
    WSAData version;        //We need to check the version.
    WORD mkword=MAKEWORD(2,2);
    int what=WSAStartup(mkword,&version);
    if(what!=0){
        std::cout<<"This version is not supported! - \n"<<WSAGetLastError()<<std::endl;
    }
    else{
        std::cout<<"Good - Everything fine!\n"<<std::endl;
    }

    SOCKET u_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(u_sock==INVALID_SOCKET)
        std::cout<<"Creating socket fail\n";

    else
        std::cout<<"It was okay to create the socket\n";

    //Socket address information
    sockaddr_in addr;
    addr.sin_family=AF_INET;
    addr.sin_addr.s_addr=inet_addr("192.168.0.90");
    addr.sin_port=htons(80);
    /*==========Addressing finished==========*/

    //Now we connect
    int conn=connect(u_sock,(SOCKADDR*)&addr,sizeof(addr));
    return conn;
}

这是我检查 ip 的函数。 我想并行运行这个函数。喜欢

void start(const char* ip)
{
    while(checkIP == SOCKET_ERROR)
   {
       try to connect the ip...
   }
}

在我的主程序中,我想运行这个启动函数,但我不想等待这个启动函数的响应......我需要这个函数应该被调用并并行地完成它的工作,并且程序像 farword 一样。 ..

int Ipcheck = checkIP("192.168.10.90");
    if(Ipcheck == SOCKET_ERROR)
    {
        ofstream _Log;
        _Log.open ("Log.txt",std::ios_base::app);
        _Log << "Unable to connect to "<<IP<<endl;
        _Log.close();
        start();
        BSTR bstrr = SysAllocString(L"Error");
        return bstrr;
    }

就像在这段代码中,系统调用启动函数,但我希望它只是调用函数并反手做所有事情,编译器继续执行下一条语句 BSTR 立即返回值... 请帮助我做到这一点...抱歉我的英语不好...请提供示例代码如何以反手或并行方式运行 while 循环事件...

最佳答案

要创建线程,请查看 std::thread

同时查看总是非常有用的文档 http://www.codeproject.com/Articles/540912/Cplusplus-Threads-Make-your-multitasking-life-e

通读本文,帮助您了解如何安全地创建线程、停止/避免数据竞争和锁定线程。 线程是很棒的东西,可以加快处理速度,在 UI 后面运行更新等,而其他东西正在运行。

如果您还需要,请在这里给我发消息 :) jack

关于c++ - 在 C++ 控制台应用程序中运行两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28494892/

相关文章:

c++ - OpenCV 函数合并 Mat 的黑色/透明像素除外

c++ - QVariantList追加

C++ 在模板类的情况下重载 operator+

c++ - C++11 中的 thread_local 是什么意思?

c# - 停止时快速

c++ - 为类的成员创建别名

html - 在 webkit 上显示阿拉伯字体的问题

java - 线程声明

c# - 如何实例化 C# TraceSources 以记录(多线程)ASP.NET 2.0 Web 应用程序(asmx ws)?

c++ - 是否可以在线程运行时从线程获取数据? C++