guest_user
February 15th, 2011, 01:15 PM
int startServer( struct ServerParameter &serverParameter )
{
pthread_t threadID;
ConnectionParameter *connectionParameter;
SharedData sharedData;
pthread_mutex_t sharedDataLock;
int newFD;
// initialize lock here
while ( 1 )
{
connectionParameter = new ConnectionParameter();
connectionParameter -> newFD = accept( serverFD, NULL, NULL );
pthread_mutex_lock( &sharedDataLock );
connectionParameter -> sharedDataPtr = &sharedData;
pthread_mutex_unlock( &sharedDataLock );
connectionParameter -> sharedDataLockPtr = &sharedDataLock; // Do I have to have a lock to this lock too?
pthread_create( &threadID, NULL, &handleConnection, connectionParameter );
}
...
}
In this line,
connectionParameter.sharedDataLockPtr = &sharedDataLock;
Do I have to have a lock to this lock too?
{
pthread_t threadID;
ConnectionParameter *connectionParameter;
SharedData sharedData;
pthread_mutex_t sharedDataLock;
int newFD;
// initialize lock here
while ( 1 )
{
connectionParameter = new ConnectionParameter();
connectionParameter -> newFD = accept( serverFD, NULL, NULL );
pthread_mutex_lock( &sharedDataLock );
connectionParameter -> sharedDataPtr = &sharedData;
pthread_mutex_unlock( &sharedDataLock );
connectionParameter -> sharedDataLockPtr = &sharedDataLock; // Do I have to have a lock to this lock too?
pthread_create( &threadID, NULL, &handleConnection, connectionParameter );
}
...
}
In this line,
connectionParameter.sharedDataLockPtr = &sharedDataLock;
Do I have to have a lock to this lock too?