A task scheduling method for a multi-core processor executing a parallel processing process in which at least two threads are used to execute tasks in parallel, wherein the method comprises: adding, according to correspondences between multiple tasks and M data blocks that are accessed by the multiple tasks, the multiple tasks to task queues, wherein each task of the multiple tasks is added to a task queue of a data block corresponding to the task, and the data block is corresponding to the each task, wherein the M data blocks one-to-one correspond to M task queues; and using N threads to execute tasks in N task queues of the M task queues concurrently, wherein each of the N threads executes a task in one task queue of the N task queues, different threads of the N threads execute different tasks in different task queues, and 2<N<M; wherein tasks that are created by the task scheduling method for all data blocks are different, and quantities of the tasks for all data blocks are also different, wherein the N threads are configured to execute all tasks in a task queue one by one; wherein the method further comprises adding (S101') at least one of the M task queues to a waiting queue group, wherein each of the at least one of the M task queues comprises at least one task, and the at least one task is not executed by a thread of the N threads, wherein the waiting queue group is used to store at least one task queue of the M task queues according to a first in first out rule; and wherein the multiple tasks comprise a first task belonging to a second queue, the first task, when executed by a first thread, waits for a task execution result of a third queue, the first thread is a thread that is in the N threads and that is used for executing a task in the second queue, the second queue is any task queue in the waiting queue group, the third queue is a task queue that is different from the second queue in the waiting queue group, and the method further comprises: making the first thread quit executing the first task that is waiting for the task execution result of the third queue; adding the quitted first task to the third queue; and using a second thread to execute the first task in the third queue after the first task obtains the task execution result, wherein the second thread is a thread that is in the N threads and that completes a task in a corresponding task queue, or the second thread is a thread that is in the N threads and that is made to quit executing a task in a corresponding task queue. adding, according to correspondences between multiple tasks and M data blocks that are accessed by the multiple tasks, the multiple tasks to task queues, wherein each task of the multiple tasks is added to a task queue of a data block corresponding to the task, and the data block is corresponding to the each task, wherein the M data blocks one-to-one correspond to M task queues; and using N threads to execute tasks in N task queues of the M task queues concurrently, wherein each of the N threads executes a task in one task queue of the N task queues, different threads of the N threads execute different tasks in different task queues, and 2<N<M; wherein tasks that are created by the task scheduling method for all data blocks are different, and quantities of the tasks for all data blocks are also different, wherein the N threads are configured to execute all tasks in a task queue one by one; wherein the method further comprises adding (S101') at least one of the M task queues to a waiting queue group, wherein each of the at least one of the M task queues comprises at least one task, and the at least one task is not executed by a thread of the N threads, wherein the waiting queue group is used to store at least one task queue of the M task queues according to a first in first out rule; and wherein the multiple tasks comprise a first task belonging to a second queue, the first task, when executed by a first thread, waits for a task execution result of a third queue, the first thread is a thread that is in the N threads and that is used for executing a task in the second queue, the second queue is any task queue in the waiting queue group, the third queue is a task queue that is different from the second queue in the waiting queue group, and the method further comprises: making the first thread quit executing the first task that is waiting for the task execution result of the third queue; adding the quitted first task to the third queue; and using a second thread to execute the first task in the third queue after the first task obtains the task execution result, wherein the second thread is a thread that is in the N threads and that completes a task in a corresponding task queue, or the second thread is a thread that is in the N threads and that is made to quit executing a task in a corresponding task queue. making the first thread quit executing the first task that is waiting for the task execution result of the third queue; adding the quitted first task to the third queue; and using a second thread to execute the first task in the third queue after the first task obtains the task execution result, wherein the second thread is a thread that is in the N threads and that completes a task in a corresponding task queue, or the second thread is a thread that is in the N threads and that is made to quit executing a task in a corresponding task queue.