C语言中闭包的探究及比较(七)

2013-07-22 17:59:38 · 作者: · 浏览: 1444

 

  void *testBlock(void*blk)

  {

  sleep(2);

  printf("testBlock : Begin to exec blk.\n");

  DemoBlock demoBlk = (DemoBlock)blk;

  demoBlk();

  returnNULL;

  }

  在这个示例中,位于test()函数的block类型的变量blk就作为函数参数传递给testBlock。

  正常情况下,这段代码可以成功运行,输出:

  [cpp]

  Before test()

  threadreturns : 0

  testBlock : Begin to exec blk.

  2048

  After test()

  如果按照注释,将test()函数最后一行改为休眠1s的话,正常情况下程序会在输出如下结果后崩溃:

  [cpp]

  Before test()

  threadreturns : 0

  After test()

  testBlock : Begin to exec blk.