Commit ebd3745c authored by guilhem@mysql.com's avatar guilhem@mysql.com

Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0

into mysql.com:/home/mysql_src/mysql-4.0
parents 8c1cb889 2532adf4
...@@ -535,11 +535,19 @@ class THD :public ilink ...@@ -535,11 +535,19 @@ class THD :public ilink
void close_active_vio(); void close_active_vio();
#endif #endif
void awake(bool prepare_to_die); void awake(bool prepare_to_die);
/*
For enter_cond() / exit_cond() to work the mutex must be got before
enter_cond() but released before exit_cond() (in 4.1, assertions will soon
ensure this). Use must be:
lock mutex; enter_cond(); ...; unlock mutex; exit_cond().
If you don't do it this way, you will get a deadlock if another thread is
doing a THD::awake() on you.
*/
inline const char* enter_cond(pthread_cond_t *cond, pthread_mutex_t* mutex, inline const char* enter_cond(pthread_cond_t *cond, pthread_mutex_t* mutex,
const char* msg) const char* msg)
{ {
const char* old_msg = proc_info; const char* old_msg = proc_info;
safe_mutex_assert_owner(mutex);
mysys_var->current_mutex = mutex; mysys_var->current_mutex = mutex;
mysys_var->current_cond = cond; mysys_var->current_cond = cond;
proc_info = msg; proc_info = msg;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment