代码之家  ›  专栏  ›  技术社区  ›  Mark

C++对线程的困惑

  •  1
  • Mark  · 技术社区  · 16 年前

    基本上,这就是我所拥有的:

    Server::
    Server (int port) {
        cout << "Initializing server.\n";
    
        (...)       
    
        pthread_t newthread;
        pthread_create(&newthread, NULL, &Server::_startListening, NULL);
    
        cout << "Exit\n";
        pthread_exit(NULL); // <-- Question
    }
    
    void* Server::_startListening (void* param) {
    cout << "Start listening for clients ...\n";
    return 0;
    }
    

    问题: 如果我不把pthread_exit(空);在代码中,当我在Linux(Ubuntu)上编译它时,它会工作,但在Mac OSX 10.6.2上它不会工作。当我在Linux上编译和运行它时,它会说初始化服务器,开始监听客户机,退出,而在MacOSX上,它会说初始化服务器,退出,开始监听客户机。

    如果我把它放在出口上方,问题似乎发生在pthread_出口周围。这条信息永远不会显示(真奇怪)。

    我做错什么了吗?

    6 回复  |  直到 16 年前
        1
  •  7
  •   Anycorn    16 年前

        2
  •  3
  •   R Samuel Klatchko    16 年前

        3
  •  1
  •   Eric Mickelsen    16 年前

        4
  •  0
  •   Tanzelax    16 年前

        5
  •  0
  •   Potatoswatter    16 年前

    pthread_exit main()

    pthread_join

        6
  •  0
  •   Scott Stafford    16 年前

    推荐文章