You can use groups to mark a task as being "claimable by a member of group X". This make the task appear in a query that looks for all tasks a user is candidate for. Once the task is claimed, it's "assigned" to a single user and won't show up in the query for other group-members.
If your application doesn't actually "claim" the task, when a user is working on it, it will still be available for that query. You could, for example, use a property on the task/process that holds the users that are currently working on the task…