Concurrent Constraint Programming (CCP) is a model for computing that describes multiple 'agents' (processes) reading and writing 'constraints' to shared variables. Communication is based on ask and tell:
There are 'timed' variations based on TemporalLogic that will associate a discrete time with each constraint and allowing propagation rules (for defining T+1 in terms of T), and those allow the constraints themselves to be non-monotonic over monotonic time. Other extensions include soft constraints (constraints have priorities, representing preference), stochastic constraints (introduces probability, for simulation), non-deterministic constraints, 'universal' constraints (which apply 'forall' style rules across a domain, rather than applying to specific variables), and so on.
A few CCP papers distinguish 'indeterminism' (committed choice, subject to RaceCondition) vs. 'non-determinism' (which relates to 'backtracking' or logically following all branches simultaneously and killing off inconsistent paths; NonDeterministicTuringMachine). Outside CCP, I have not seen literature to corroborate that this is a widely accepted distinction. Backtracking in CCP is easy to represent, though: you only need disjunctive constraints ((X < 5) || (X > 10)).
As with ConstraintProgramming, most implementations of CCP will be limited in expressiveness to a limited set of primitive 'domains', such as natural numbers, real numbers, propositional logic, etc. for which efficient evaluation strategies are known. Other domains may be modeled atop these primitive domains.
Unlike ConstraintProgramming, which has a clear 'goal' condition (an assignment to variables), there is no 'goal' driving CCP.
The stylistic relationship to ConstraintProgramming (CP) is weak, mostly related to the 'constraint store'. CP is clearly driven by a goal (GoalBasedProgramming) to satisfy a given set of constraints by assignment to a set of variables. CCP, by comparison, is focused upon how the agents themselves progress; while agents may be implemented with an in-the-large 'goal' in mind, they make local decisions. If CCP is used to accomplish a goal, the given set of agents will represent only one solution 'strategy' among many.
See: TupleSpace, BlackboardMetaphor, ConstraintProgramming, ReactiveDemandProgramming