Optimizing Task Throughput For Large-Scale Mobile Crowdsourcing In Smart Cities