We can't make single cores any faster, so realistically multicore is the only "solution". That said, most languages have M:N event loops, where M tasks are distributed across N OS threads so even if your software doesn't directly use multiple cores, you end up using them indirectly for example for IO to the database or other APIs.