No. Macros are syntax transforms, they happen just after parsing and before the function itself exists. You can’t switch whether a macro is applied or not at runtime, they are always expanded.
If you want to switch between threaded and nonthreaded versions, you need either a runtime if to switch between different inlined versions or call different functions like in your first example.