int ZnkThread_waitEnd( size_t thno ) { const size_t current_thno = ZnkThread_getCurrentNo(); if( current_thno != thno ){ /*** * 現在のスレッドと同じ番号が指定された場合は除外する. * (終了するはずがないので) */ int result = 0; ZnkThreadInfo thinfo = znThreadList_getInfo( thno ); if( thinfo && thinfo->handle_ ){ result = waitEnd( thinfo ); } return result; } return 0; }
dp::Int dpMain( dp::Args & _args ) { dp::Utf32 title; if( _args.size() >= 2 ) { title = _args[ 1 ]; } std::mutex mutex; std::condition_variable cond; dp::Bool ended = false; auto windowUnique = dp::unique( newWindow( title , mutex , cond , ended ) ); if( windowUnique.get() == nullptr ) { std::printf( "ウィンドウの生成に失敗\n" ); return 1; } waitEnd( mutex , cond , ended ); return 0; }