我是这样找到色情网站的…

 红网…百姓呼声…

 

伪命题: 中关村人平均寿命53岁

华西都市报原文,引用报道很多,引用其中一篇 IT精英猝死引热议 报告称中关村人平均寿命53岁

证明其伪命题如下:

  • 中关村的开发从1998年开始。引文 中关村历史回顾:从初创期到发展期
  • 这个行业初创,老年人不会多。且估计98年的时候,往多了算,主力的人员算作平均年龄40岁吧。
  • 这些人到现在平均年龄50岁。
  • 的确有一些人50岁左右就死了,他们就是华西都市报的采样数据。
  • 有没有活到60、70、80岁以上的人呢?肯定是有的,但是他们现在还没死。所以没有归纳到采样数据里。

哗众取宠。

村里的民工可以安心了。

 

SQL Server CLR的进程和线程

结论

  • SQL Server CLR是一个多线程运行的环境。
  • 静态变量等线程安全问题,在CLR环境中存在。

摘录《Professional SQL Server™ 2005 CLR Programming》

SQL Server 2005 hosts the CLR in a “sandbox”-like environment in-process to itself, as you can see Figure 1-2. When a user requests a SQL CLR object for the first time, SQL Server will load the .NET execution engine mscoree.dll (which is the CLR) into memory. 

实验

CLR代码

public partial class ProcessThread
{
    public static int static_i=0;

    [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, IsPrecise = true)]
    public static SqlString PID()
    {
        return  Process.GetCurrentProcess().Id.ToString();
    }

    [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, IsPrecise = true)]
    public static SqlString TID()
    {
        return AppDomain.GetCurrentThreadId().ToString()+ ":"+
            System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();
    }

    [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, IsPrecise = true)]
    public static SqlString StaticI()
    {
        return (static_i++).ToString();
    }

};

安装CLR的SQL代码

CREATE ASSEMBLY sqlclr_test
FROM 'C:\SQLCLR\bin\Release\sqlclr.dll'
WITH permission_set = UNSAFE;
GO

create function fn_processid () returns nvarchar(max)
as external name sqlclr_test.ProcessThread.PID
GO
create function fn_threadid () returns nvarchar(max)
as external name sqlclr_test.ProcessThread.TID
GO
create function fn_statici () returns nvarchar(max)
as external name sqlclr_test.ProcessThread.StaticI
GO

测试用查询命令

select
    dbo.fn_processid() as [ProcessID],
    dbo.fn_threadid()  as [ThreadID],
    dbo.fn_statici()   as [StaticI]

返回结果

ProcessID ThreadID StaticI
1608 5820:4 11

系统进程截图 (Process Explorer) 

线程模型

现象 

  1. 每次执行查询命令,得到的ThreadID会发生变化,在SQL Server的进程包含的线程池中轮转。
  2. 每次执行查询命令,不论是否同一个线程,StaticI的值会增加。
  3. SQL Server的用户进程(登录),与所执行的线程编号几乎没有关系。

 

Random posts

  • 观山寨手机有感
  • 富兰克林的13项美德
  • 春运铁路的确应该涨价,吴敬琏说得很对
  • 让我心烦了一夜的蚊子
  • Compile VC6 project with makefile