A computing system (200, 408, 500, 600, 2200, 2300) comprising: one or more memories (2220, 2225); one or more processing units (2210, 2215) coupled to the one or more memories (2220, 2225); and one or more computer readable storage media storing computer-executable instructions specifying operations for: determining an amount of processing resources (412, 526) in the computing system (200, 408, 500, 600, 2200, 2300); defining one or more virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) for the computing system (200, 408, 500, 600, 2200, 2300), each virtual domain comprising a defined portion of the processing resources (412, 526) and one or more data structure instances (520, 622, 750), wherein the defined portion of the processing resources (412, 526) can be specified as less than all of the processing resources (412, 526) available for a given processing socket of the computing system (200, 408, 500, 600, 2200, 2300); or a portion of the processing resources (412, 526) associated with a plurality of sockets of the computing system (200, 408, 500, 600, 2200, 2300), and wherein the processing resources (412, 526) assigned to the virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) are dynamically reconfigurable; receiving a task (518, 720) from an application (514, 704); determining, from the one or more data structure instances, a data structure instance (520, 622, 750) useable to execute the task (518, 720); determining a virtual domain of the one or more virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) that comprises the data structure instance (520, 622, 750) useable to execute the task (518, 720), the data structure instance (520, 622, 750) having a first implementation; sending the task (518, 720) to the determined virtual domain, and changing the first implementation to a second implementation, wherein the change from the first implementation to the second implementation does not require a change in the definition of the task (518, 720) to be performed using the second implementation. one or more memories (2220, 2225); one or more processing units (2210, 2215) coupled to the one or more memories (2220, 2225); and one or more computer readable storage media storing computer-executable instructions specifying operations for: determining an amount of processing resources (412, 526) in the computing system (200, 408, 500, 600, 2200, 2300); defining one or more virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) for the computing system (200, 408, 500, 600, 2200, 2300), each virtual domain comprising a defined portion of the processing resources (412, 526) and one or more data structure instances (520, 622, 750), wherein the defined portion of the processing resources (412, 526) can be specified as less than all of the processing resources (412, 526) available for a given processing socket of the computing system (200, 408, 500, 600, 2200, 2300); or a portion of the processing resources (412, 526) associated with a plurality of sockets of the computing system (200, 408, 500, 600, 2200, 2300), and wherein the processing resources (412, 526) assigned to the virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) are dynamically reconfigurable; determining an amount of processing resources (412, 526) in the computing system (200, 408, 500, 600, 2200, 2300); defining one or more virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) for the computing system (200, 408, 500, 600, 2200, 2300), each virtual domain comprising a defined portion of the processing resources (412, 526) and one or more data structure instances (520, 622, 750), wherein the defined portion of the processing resources (412, 526) can be specified as less than all of the processing resources (412, 526) available for a given processing socket of the computing system (200, 408, 500, 600, 2200, 2300); or a portion of the processing resources (412, 526) associated with a plurality of sockets of the computing system (200, 408, 500, 600, 2200, 2300), and wherein the processing resources (412, 526) assigned to the virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) are dynamically reconfigurable; receiving a task (518, 720) from an application (514, 704); determining, from the one or more data structure instances, a data structure instance (520, 622, 750) useable to execute the task (518, 720); determining a virtual domain of the one or more virtual domains (234, 230, 236, 238, 246, 414, 522, 614, 712) that comprises the data structure instance (520, 622, 750) useable to execute the task (518, 720), the data structure instance (520, 622, 750) having a first implementation; sending the task (518, 720) to the determined virtual domain, and changing the first implementation to a second implementation, wherein the change from the first implementation to the second implementation does not require a change in the definition of the task (518, 720) to be performed using the second implementation.