Click here to Skip to main content
15,892,298 members
Articles / Desktop Programming / MFC

Method for detecting and solving deadlocks in multithreading applications

Rate me:
Please Sign up or sign in to vote.
4.63/5 (5 votes)
17 Oct 20013 min read 90.4K   1.2K   31  
Presenting a method for detecting and solving deadlocks in multithreading applications using critical sections as synchronization objects
//WThread.h : header file

#ifndef _WTHREAD_H_
#define _WTHREAD_H_

class CWThread
{
public:
  //Constructor
  CWThread() : m_hThread(NULL), m_bSuspended(TRUE) {}

  //Destructor
  virtual ~CWThread()
  {
    Stop();
  }

  //Create
  BOOL Create(LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter=NULL);

  //Resume the thread
  BOOL Resume();

  //Start the thread
  BOOL Start()
  {
    //Technically is the same as Resume()
    return Resume();
  }

  //Suspend the thread
  BOOL Suspend();

  //Get thread priority
  int GetPriority()
  {
    return GetThreadPriority(m_hThread);
  }

  //Set thread priority
  BOOL SetPriority(int iPriority)
  {
    return (TRUE == SetThreadPriority(m_hThread, iPriority));
  }

  //Stop the thread
  BOOL Stop();

  //Check if is created
  BOOL IsCreated()
  {
    return (m_hThread != NULL);
  }

  //Check if is suspended
  BOOL IsSuspended()
  {
    return m_bSuspended;
  }

private:
  CWThread& operator=(const CWThread&); //disallow copy
  //Handle to the thread
  HANDLE m_hThread;
  //Suspension Flag
  BOOL m_bSuspended;
};

#endif // _WTHREAD_H_

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Romania Romania
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions