关于多线程程序在多核机器上运行的有关问题

关于多线程程序在多核机器上运行的问题。
1.是不是所以的多线程程序在多核CUP上面都能并行运行啊?
也就是说随便写个多线程的控制台程序,自己也没有做什么特别的设置,丢到多核机器上面跑,cpu就能自动的做并行执行?
(我看到有个多线程程序在单核机上运行和在多核上运行结果不一样。)

2.在windows这样的非实时操作系统上,进程(内核级线程)是基于cpu时间片轮转的,但是进程里面的线程是什么样的调度方法呢?是将本进程获得的时间片又划分成更小的时间片让子线程也轮转执行?

问题有两个,请好心人编号作答解惑~~~~谢谢啦~~~

------解决方案--------------------
不一定多线程就能并行,免费的午餐是没得的
windows调度只管线程,没有进程的调度

------解决方案--------------------
这个绝大部分时间是不可能的,因为不管是几个核的cpu,每个核执行线程都是按时间片轮循的,整个操作系统有很多线程,不是只有你创建的那几个线程,所以并行是不大可能的。

“在windows这样的非实时操作系统上,进程(内核级线程)是基于cpu时间片轮转的,但是进程里面的线程是什么样的调度方法呢?是将本进程获得的时间片又划分成更小的时间片让子线程也轮转执行?”
==》操作系统在执行程序时跟进程没有关系的,真正在跑的里面的线程,操作系统只对线程就行调度管理,进程你可以看成是操作系统管理线程的容器,操作系统通过进程这个容器对不同的线程进行安全性以及资源管理,确保线程的安全权限以及不同程序的线程不会有意外的交互,影响功能
------解决方案--------------------
如果不考虑优先级,一个进程准备执行的线程越多,它得到的时间就越多,这很正常
时间片按进程平均分,再分给线程,这样无好处,而且不易实现
------解决方案--------------------
这是操作系统关于线程和进程的调度的事,如果操作系统支持多线程使用多核CPU,那就没问题,否则就是100个CPU核也没用,也是多个线程只使用一个CPU核