Bullet Collision Detection & Physics Library: btConstraintSolverPoolMt Class Reference

Bullet Collision Detection & Physics Library

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

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
virtual void | reset () BT_OVERRIDE
| clear internal cached data and reset random seed
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
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 32 of file btDiscreteDynamicsWorldMt.h.

## Constructor & Destructor Documentation

## ◆ btConstraintSolverPoolMt() [1/2]

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

Definition at line 87 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ btConstraintSolverPoolMt() [2/2]

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

Definition at line 100 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ ~btConstraintSolverPoolMt()

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

Definition at line 105 of file btDiscreteDynamicsWorldMt.cpp.

## Member Function Documentation

## ◆ getAndLockThreadSolver()

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

btConstraintSolverPoolMt

Definition at line 53 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ getSolverType()

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

Implements btConstraintSolver.

Definition at line 55 of file btDiscreteDynamicsWorldMt.h.

## ◆ init()

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

Definition at line 72 of file btDiscreteDynamicsWorldMt.cpp.

## ◆ reset()

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

clear internal cached data and reset random seed

Implements btConstraintSolver.

Definition at line 133 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 117 of file btDiscreteDynamicsWorldMt.cpp.

## Member Data Documentation

## ◆ kCacheLineSize

const size_t btConstraintSolverPoolMt::kCacheLineSize = 128
| staticprivate

Definition at line 58 of file btDiscreteDynamicsWorldMt.h.

## ◆ m_solvers

btAlignedObjectArray<ThreadSolver> btConstraintSolverPoolMt::m_solvers
| private

Definition at line 65 of file btDiscreteDynamicsWorldMt.h.

## ◆ m_solverType

btConstraintSolverType btConstraintSolverPoolMt::m_solverType
| private

Definition at line 66 of file btDiscreteDynamicsWorldMt.h.

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

- btDiscreteDynamicsWorldMt.h
- btDiscreteDynamicsWorldMt.cpp