Current versions of LTM have implemented Clustered Multi Processing, or CMP, to allow systems with multiple cores to share the processing of connections from a single virtual server.  Not all connection information is shared across cores, so enabling some features on a virtual server which require state or data synchronization between the cores will cause connections to be ineligible for CMP. 

In iRules, global variables are intended to be dynamically updated, for which reason they are appropriately demoted from CMP processing.  Data Group Lists, or Classes, are a specific form of global variable. Since class data is read-only, and is available to all cores upon configuration load, there is no dynamic data sharing required between TMM instances, and there is no real need to demote a virtual server from CMP processing simply because it is represented as a global variable.

The LTM configuration parser identifies global variables (including classes) by the "$::" preamble:

  [ matchclass $HTTP_CONTENT contains $::my_data_class ]

In LTM 9.4.2, we introduced the ability to reference class lists from within an iRule without demoting them from CMP by referencing them without the "$" prefix.  To call a class list in a 9.4.2 or better iRule, use the findclass or the matchclass command with the new syntax:

  [ matchclass $HTTP_CONTENT contains ::my_data_class ]