Bullet Collision Detection & Physics Library: btConstraintSolverPoolMt Class Reference

Bullet Collision Detection & Physics Library

Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
btConstraintSolverPoolMt Class Reference

btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of them. More...

`#include <btDiscreteDynamicsWorldMt.h>`

Inheritance diagram for btConstraintSolverPoolMt:
[legend]
Collaboration diagram for btConstraintSolverPoolMt:
[legend]

## Classes
struct | ThreadSolver

## Public Member Functions
| btConstraintSolverPoolMt (int numSolvers)
| btConstraintSolverPoolMt (btConstraintSolver **solvers, int numSolvers)
virtual | ~btConstraintSolverPoolMt ()
virtual btScalar | solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifolds, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher) BT_OVERRIDE
| solve a group of constraints More...
virtual void | reset () BT_OVERRIDE
| clear internal cached data and reset random seed More...
virtual btConstraintSolverType | getSolverType () const BT_OVERRIDE
Public Member Functions inherited from btConstraintSolver
virtual | ~btConstraintSolver ()
virtual void | prepareSolve (int, int)
virtual void | allSolved (const btContactSolverInfo &, class btIDebugDraw *)

## Private Member Functions
ThreadSolver * | getAndLockThreadSolver ()
| btConstraintSolverPoolMt More...
void | init (btConstraintSolver **solvers, int numSolvers)

## Private Attributes
btAlignedObjectArray< ThreadSolver > | m_solvers
btConstraintSolverType | m_solverType

## Static Private Attributes
static const size_t | kCacheLineSize = 128

## Detailed Description

btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of them.

Each solver in the pool is protected by a mutex. When solveGroup is called from a thread, the pool looks for a solver that isn't being used by another thread, locks it, and dispatches the call to the solver. So long as there are at least as many solvers as there are hardware threads, it should never need to spin wait.

Definition at line 35 of file btDiscreteDynamicsWorldMt.h.

## Constructor & Destructor Documentation

## ◆ btConstraintSolverPoolMt() [1/2]

btConstraintSolverPoolMt::btConstraintSolverPoolMt | ( | int | numSolvers | ) |
| explicit

Definition at line 149 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ btConstraintSolverPoolMt() [2/2]

btConstraintSolverPoolMt::btConstraintSolverPoolMt | ( | btConstraintSolver ** | solvers,
|  | int | numSolvers
| ) |  |

Definition at line 162 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ ~btConstraintSolverPoolMt()

btConstraintSolverPoolMt::~btConstraintSolverPoolMt | ( |  | ) |
| virtual

Definition at line 167 of file btDiscreteDynamicsWorldMt.cpp.

## Member Function Documentation

## ◆ getAndLockThreadSolver()

btConstraintSolverPoolMt::ThreadSolver * btConstraintSolverPoolMt::getAndLockThreadSolver | ( |  | ) |
| private

btConstraintSolverPoolMt

Definition at line 115 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ getSolverType()

virtual btConstraintSolverType btConstraintSolverPoolMt::getSolverType | ( |  | ) | const
| inlinevirtual

Implements btConstraintSolver.

Definition at line 59 of file btDiscreteDynamicsWorldMt.h.

## ◆ init()

void btConstraintSolverPoolMt::init | ( | btConstraintSolver ** | solvers,
|  | int | numSolvers
| ) |  |
| private

Definition at line 134 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ reset()

void btConstraintSolverPoolMt::reset | ( |  | ) |
| virtual

clear internal cached data and reset random seed

Implements btConstraintSolver.

Definition at line 196 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ solveGroup()

btScalar btConstraintSolverPoolMt::solveGroup | ( | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | btPersistentManifold ** | manifolds,
|  | int | numManifolds,
|  | btTypedConstraint ** | constraints,
|  | int | numConstraints,
|  | const btContactSolverInfo & | info,
|  | btIDebugDraw * | debugDrawer,
|  | btDispatcher * | dispatcher
| ) |  |
| virtual

solve a group of constraints

Implements btConstraintSolver.

Definition at line 179 of file btDiscreteDynamicsWorldMt.cpp.

## Member Data Documentation

## ◆ kCacheLineSize

const size_t btConstraintSolverPoolMt::kCacheLineSize = 128
| staticprivate

Definition at line 62 of file btDiscreteDynamicsWorldMt.h.

## ◆ m_solvers

btAlignedObjectArray<ThreadSolver> btConstraintSolverPoolMt::m_solvers
| private

Definition at line 69 of file btDiscreteDynamicsWorldMt.h.

## ◆ m_solverType

btConstraintSolverType btConstraintSolverPoolMt::m_solverType
| private

Definition at line 70 of file btDiscreteDynamicsWorldMt.h.

The documentation for this class was generated from the following files:

- btDiscreteDynamicsWorldMt.h
- btDiscreteDynamicsWorldMt.cpp