CondVar.h revision e9df6ba5a8fcccf306a80b1670b423be8fe7746a
15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/****************************************************************************** 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Copyright (C) 2012 Broadcom Corporation 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * you may not use this file except in compliance with the License. 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * You may obtain a copy of the License at: 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 128d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * distributed under the License is distributed on an "AS IS" BASIS, 138d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * See the License for the specific language governing permissions and 158d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * limitations under the License. 168d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * 172aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz ******************************************************************************/ 182aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz 192aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz/****************************************************************************** 208d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * 218d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang * Encapsulate a condition variable for thread synchronization. 2271dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang * 238d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ******************************************************************************/ 248d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 258d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#pragma once 268d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#include <pthread.h> 278d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#include "Mutex.h" 288d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 298d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 3071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuangclass CondVar 318d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang{ 328d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuangpublic: 338d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang /******************************************************************************* 348d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** 358d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** Function: CondVar 3671dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** 3771dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** Description: Initialize member variables. 3871dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** 3971dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** Returns: None. 4071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** 418d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang *******************************************************************************/ 428d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang CondVar (); 438d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 448d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 458d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang /******************************************************************************* 468d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** 478d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** Function: ~CondVar 488d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** 498d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** Description: Cleanup all resources. 5071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang ** 518d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** Returns: None. 528d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang ** 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *******************************************************************************/ 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ~CondVar (); 55f0b10c7b3de1a61e531d5775417c37fe42021ee4Elliott Hughes 56348bf15315b2da38964762d22955bd682359fff2Tsu Chiang Chuang 579a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes /******************************************************************************* 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** Function: wait 60bff9fb7e654a9fee9f7ef7f9ebf3c150da6d15f6Tsu Chiang Chuang ** 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** Description: Block the caller and wait for a condition. 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** 632d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes ** Returns: None. 642d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes ** 652d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes *******************************************************************************/ 669a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes void wait (Mutex& mutex); 679a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes 689a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes 699a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes /******************************************************************************* 709a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes ** 7121a5212937e9f06496eacc836d540123ea194ee7Brian Carlstrom ** Function: wait 729a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes ** 738435047d3e43a34ec1972a844737aa2102a570d6Brian Carlstrom ** Description: Block the caller and wait for a condition. 742d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes ** millisec: Timeout in milliseconds. 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ** Returns: True if wait is successful; false if timeout occurs. 77559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz ** 78559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz *******************************************************************************/ 79559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz bool wait (Mutex& mutex, long millisec); 80559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz 81559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz 82559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz /******************************************************************************* 83559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz ** 84559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz ** Function: notifyOne 85559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz ** 86559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz ** Description: Unblock the waiting thread. 87f0b10c7b3de1a61e531d5775417c37fe42021ee4Elliott Hughes ** 8831fe38c771ae6d717600f01eb577e8a4cd5ab378Elliott Hughes ** Returns: None. 8931fe38c771ae6d717600f01eb577e8a4cd5ab378Elliott Hughes ** 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *******************************************************************************/ 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes void notifyOne (); 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 93559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertzprivate: 94559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz pthread_cond_t mCondition; 95966a5ab08d2b77b99ec0e43460598fd376262530Elliott Hughes}; 968d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang