Thanks for the reply.
I just gave that as an example. Why core2 finished more jobs than core1 is not the key point I want to point out. As the reason can be the two cores have different speed or loadings(say assigned some other jobs to core1 at the same time parallel is running), or the jobs assigned to core1 took longer time to finish than those on core2, cause the jobs could be different in their running times. Linux is quite good at managing the jobs and loads on the CPUs, but I do not want to job switch back and forth between the cores. I want to job pined to the core when it is assigned to until done.
The idea here is: Let parallel assign the jobs be assigned to a certain resource, (the resource could be hard-driver, internet port and so on, here I just used two cores: core1 or core2 as an example), and use taskset to pin that job onto the resource assigned to. ( here is the CPU core)
By doing this way, I can certainly sure that there is one and only one running job using that a certain resource(core) assigned by parallel. There is no competition for that resource any more, and when the resource is free(job done), a new job could be assigned to use it.
One way I thought could implement this feature is to have an index{##} for the slots of running jobs, and the resource can be assigned by the slot number.