0

Linuxの動作中のアプリケーションをWindowsに移植しようとしています(windows.hand POSIXを使用pthread_win32

したがって、クライアントのフィールドが定義されています。

struct ClientIdentifier {
  pthread_t thread;
  int id_client;
  ...
};

vector<ClientIdentifier> clients;

クライアントのフィールドでこのクライアントのスレッドを見つけようとしています(フィールドのインデックスを返します)

int Server::getClientIndex() {
  for (unsigned int i = 0; i < clients.size(); ++i) {
    if (pthread_self() == clients.at(i).thread) {
      return i;
    }
  }
  return -1;
}

でもこれは:

pthread_self() == clients.at(i).thread

結果:

34 D:\WORKSPACE\C++\DS\gs\server.cpp no match for 'operator==' in 'pthread_self() == (((std::vector<ClientIdentifier, std::allocator<ClientIdentifier> >*)((Server*)this)) + 8u)->std::vector<_Tp, _Alloc>::at [with _Tp = ClientIdentifier, _Alloc = std::allocator<ClientIdentifier>](i)->ClientIdentifier::thread' 

note C:\programy\DevCpp\include\objbase.h:80 candidates are: BOOL operator==(const GUID&, const GUID&)

どうすれば解決できますか?

4

1 に答える 1

2

pthread_equal()値を比較するために使用しpthread_tます。

于 2012-11-14T10:03:32.547 に答える