thread.c

来自「ORACLE编程的好东西,纯C写的OCI封装.很好用,支持数据池.」· C语言 代码 · 共 57 行

C
57
字号
#include "ocilib.h"

#define MAX_THREADS 50


void key_cleanup(void *str)
{
    free(str);
}

void worker(OCI_Thread *thread, void *data)
{
   const void *id = OCI_HandleGetThreadID(thread);
   char *str = malloc(50);

   sprintf(str, "thread %p !\n", id);

   OCI_ThreadKeySetValue("ID", str);

   /* ... do some more processing here... */

   str = OCI_ThreadKeyGetValue("ID");

   printf(str);
}

int main()
{
    OCI_Thread *th[MAX_THREADS];
    int i;

    if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT | OCI_ENV_THREADED))
        return EXIT_FAILURE;

    OCI_ThreadKeyCreate("ID", key_cleanup);

     /* create threads */

    for (i = 0; i < MAX_THREADS; i++)
    {
        th[i] = OCI_ThreadCreate();
        OCI_ThreadRun(th[i], worker, NULL);
    }
  
    /* wait for threads and cleanup */

    for (i = 0; i < MAX_THREADS; i++)
    {
       OCI_ThreadJoin(th[i]);
       OCI_ThreadFree(th[i]);
    }

    OCI_Cleanup();
 
    return EXIT_SUCCESS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?