我的测试源码是:
volatile int gl = 0;
void * InternalHandler( void * param )
{
for ( int i = 0; i < 100000; ++i ) { ++gl; }
return 0;
}
int main()
{
pthread_t ths[100] = { 0 };
for ( int i = 0; i < 100; ++i)
{
pthread_create( &ths[ i ], 0, InternalHandler, 0 );
}
for ( int i =
例如,假设有一个运行在单核CPU上嵌入式应用程序。然后该应用程序将被移植到多核CPU上。该应用程序将在单核还是多核上运行?更具体地说,我对ARM CPU (但不仅仅是)和工具链的细节感兴趣,例如标准C/C++库。这个问题的目的是这样的:CPU有责任“决定”在多核或编译器工具链、开发人员和特定库的标准平台上执行吗?再一次,我对其他系统的趋势也很感兴趣。有很多应用程序和RTOS (例如Linux)运行在不同的CPU上,但是架构相同,那么这是否意味着它们的编译方式不同?
所以我在几年前(2008年)看了这段视频,乔·阿姆斯特朗( Joe )解释了Erlang的背景。他说得很有道理,我要问的是他在13点07分说的话:
Erlang是一种并发语言;我的意思是,语言中的进程是编程语言的一部分。它们不属于操作系统。这就是像Java和C++这样的语言的问题所在:线程不是在编程语言中;线程是操作系统中的东西,它们继承了操作系统中的所有问题。其中一个问题是内存管理系统的粒度.
他继续讨论线程管理的问题,以及这与语言和操作系统之间的脱节有什么关系。然后又说,Erlang在利用多核技术方面处于独特的地位,也就是说,它可以“直接”管理内核,而根本不需要使用线程?或者是他理