I believe you can force low QoS processes to run only on E cores, but you cannot force high QoS processes to run exclusively on P cores. Even with high QoS set, you can find your process on E cores.
So it is possible to get a bit more control, at least on Apple ARM chips, but it’s intended for games. They even mention professional apps needing high performance are able to get the performance they need with the normal Dispatch APIs. There is no locking threads to cores, but you can set thread affinities as hints if you think certain threads should or should not share L2 cache (at least for intel based Macs). https://developer.apple.com/forums/thread/44002