小编edd*_*yan的帖子

pthread_cond_wait为2个线程

我正在尝试实现pthread_cond_wait2个线程.我的测试代码试图使用两个线程来执行以下场景:

  • 线程B等待条件
  • 线程A打印"Hello"五次
  • 线程A表示线程B
  • 线程A等待
  • 线程B打印"再见"
  • 线程B表示线程A.
  • 循环开始(x5)

到目前为止,代码打印"Hello"五次然后卡住了.从我看到的例子来看,我似乎在正确的轨道上,"锁定互斥,等待,通过其他线程发出信号,解锁互斥,做东西,循环"

测试代码:

//Import 
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

//global variables
pthread_cond_t      condA  = PTHREAD_COND_INITIALIZER;
pthread_cond_t      condB  = PTHREAD_COND_INITIALIZER;
pthread_mutex_t     mutex = PTHREAD_MUTEX_INITIALIZER;




void *threadA()
{
    int i = 0, rValue, loopNum;

    while(i<5)
    {
        //unlock mutex
        rValue = pthread_mutex_unlock(&mutex);

        //do stuff
        for(loopNum = 1; loopNum <= 5; loopNum++)
            printf("Hello %d\n", loopNum);

        //signal condition of thread b
        rValue = pthread_cond_signal(&condB);

        //lock mutex
        rValue = pthread_mutex_lock(&mutex);

        //wait for turn
        while( …
Run Code Online (Sandbox Code Playgroud)

c linux pthreads

9
推荐指数
1
解决办法
4万
查看次数

nosql:MongoDB、Cassandra 或数据仓库的替代方案

我在是否使用 MongoDB 或 Cassandra 来满足我的数据库需求的具体决定之间犹豫不决,并希望对我的用例进行输入以指导我的决定。

要求:

数据源

  • X 个数据中心包含 Y 个服务器。
  • 每个服务器有 N 个网络和 M 个统计信息。

例如目前(3 个数据中心、50 个服务器、19 个网络和 10 个统计数据)。这些数字会随着时间的推移而增加。

数据获取:

  • 每小时为每个服务器解析一个 xml 页面(~20kb / 页)。(~25mb/天)

数据存储:

  • 使用聚合来组织(每小时、每天、每月)结构以找到更高的值(小时 -> 天)

注意:我们需要具备以下能力:

  • 动态添加/删除值(数据中心/服务器/网络/统计)和可扩展性是一个关键问题,因此我们正在从 SQL 转向 NoSQL。
  • 可靠性也是一个高优先级(主/从,无损坏)并且需要“简单”的可维护性。
  • 写作是每小时,不需要“大规模”的写作表现。

用例示例:在前端,您将像这样查询,选择;日期窗口、期间报告、特定数据中心、特定/所有网络、特定/所有统计数据以及结果是跨服务器总计还是单独。

Example #1

 - From: August 16th 2012 -> April 16th 2013
 - Period: Daily
 - Data-center: EU A
 - Stat-type: Error
 - Servers: All
Run Code Online (Sandbox Code Playgroud)

通过阅读堆栈溢出和网络上的类似文章,我得出的结论是,我最好的选择可能是 MongoDB,因为它具有灵活的查询和与关系数据库的接近度。如果我的写作量更大,Cassandra 似乎是一个选择——尽管我确实喜欢基于列的模型。我是数据库设计和管理的新手,因此易用性也是一个因素(仍然是 CS 学生)。

从我的用例中哪个 NoSql 数据库是最好的选择?

database mongodb cassandra nosql

3
推荐指数
1
解决办法
3716
查看次数

标签 统计

c ×1

cassandra ×1

database ×1

linux ×1

mongodb ×1

nosql ×1

pthreads ×1