国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ 緩存再排序,解決多線程處理后的亂序問題,不知道思路對(duì)不對(duì)[撓下巴]

這篇具有很好參考價(jià)值的文章主要介紹了C++ 緩存再排序,解決多線程處理后的亂序問題,不知道思路對(duì)不對(duì)[撓下巴]。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

使用map默認(rèn)會(huì)根據(jù)key排序的原理作緩存,隊(duì)列滿了依次推出,拋棄掉過時(shí)的數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-628268.html

#include <functional>
#include <iostream>
#include <map>
#include <random>
#include <set>
#include <tuple>
#include <vector>

template <typename V> class SortQueue {
private:
  std::function<void(const int, V &)> callback;
  std::map<int, V> m;
  int max_size;
  int last;

public:
  SortQueue(int max) : max_size(max), last(0) {}
  ~SortQueue() {}

  void setCallback(std::function<void(const int, V &)> callback) {
    this->callback = callback;
  }

  void push(int k, V &v) {
    if (k < last)
      return;
    m.emplace(std::make_pair(k, std::move(v)));
    if (m.size() > max_size) {
      auto it = m.begin();
      if (callback) {
        callback(it->first, it->second);
        last = it->first;
      }
      m.erase(it);
    }
  }
};

std::vector<int> r(int start, int end, int size) {
  std::set<int> generated_nums; // 存儲(chǔ)已生成的隨機(jī)數(shù)
  std::vector<int> nums;
  std::random_device rd;
  std::mt19937 gen(rd());
  std::uniform_int_distribution<int> dis(start, end);

  while (generated_nums.size() < size) { // 生成10個(gè)不重復(fù)的隨機(jī)數(shù)
    int random_num = dis(gen);

    if (generated_nums.find(random_num) == generated_nums.end()) {
      generated_nums.insert(random_num);
      nums.push_back(random_num);
    }
  }

  return std::move(nums);
}

void p(std::vector<int> &arr) {
  std::string result;

  for (int i = 0; i < arr.size(); ++i) {
    result += std::to_string(arr[i]) + " ";

    if ((i + 1) % 10 == 0) {
      result += "\n";
    }
  }

  std::cout << "拼接后的字符串: \n" << result << std::endl;
}

int main(int argc, char *argv[]) {
  std::vector<int> nums;

  int start = 1;
  int end = 0;
  int size = 10;
  for (int i = 0; i < 5; i++) {
    start = i * size + 1;
    end = i * size + 10;
    std::vector<int> temp = r(start, end, size);
    nums.insert(nums.end(), temp.begin(), temp.end());
  }
  // std::vector<int> nums = r(1, 50, 50);
  p(nums);

  SortQueue<int> sq(5);
  sq.setCallback(
      [](const int k, int &v) { std::cout << "K: " << k << std::endl; });
  for (int num : nums) {
    sq.push(num, num);
  }
  return 0;
}

到了這里,關(guān)于C++ 緩存再排序,解決多線程處理后的亂序問題,不知道思路對(duì)不對(duì)[撓下巴]的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flink之?dāng)?shù)據(jù)亂序處理

    Flink之?dāng)?shù)據(jù)亂序處理

    在了解為什么會(huì)亂序之前我們先來看一下在Flink中的時(shí)間語序。 1.1? Flink Time? 時(shí)間語義 Event Time:事件產(chǎn)生的時(shí)間,它通常由事件中的時(shí)間戳描述。 Ingestion Time:事件進(jìn)入Flink的時(shí)間。 Processing Time:事件被處理時(shí)當(dāng)前系統(tǒng)的時(shí)間。 這三種時(shí)間的對(duì)應(yīng)關(guān)系如下圖所示: 1.2? 數(shù)

    2024年02月07日
    瀏覽(26)
  • C++類設(shè)計(jì):一個(gè)比較復(fù)雜的日志類 支持多線程、文件切換、信息緩存(源碼)

    初級(jí)代碼游戲的專欄介紹與文章目錄-CSDN博客 github位置:codetoys/ctfc.git?src/env/myLog.h和.cpp?? ? ? ? ? 這個(gè)類功能細(xì)節(jié)比較多,因?yàn)槭情L期使用的版本,累積了各種功能。之前介紹的兩個(gè)是我的測試代碼用的版本,非常簡單,那兩個(gè)在這里: C++類設(shè)計(jì):設(shè)計(jì)一個(gè)日志類(源碼

    2024年04月10日
    瀏覽(21)
  • 【天衍系列 03】深入理解Flink的Watermark:實(shí)時(shí)流處理的時(shí)間概念與亂序處理

    Watermark 是用于處理事件時(shí)間的一種機(jī)制,用于表示事件時(shí)間流的進(jìn)展。在流處理中,由于事件到達(dá)的順序和延遲,系統(tǒng)需要一種機(jī)制來衡量事件時(shí)間的進(jìn)展,以便正確觸發(fā)窗口操作等。Watermark 就是用來標(biāo)記事件時(shí)間的進(jìn)展情況的一種特殊數(shù)據(jù)元素。 Watermark 的生成方式通常是

    2024年02月20日
    瀏覽(22)
  • kafka亂序消費(fèi)可能的原因和解決方案

    Kafka亂序消費(fèi)可能的原因有以下幾個(gè): 分區(qū)順序:Kafka中的消息按照分區(qū)進(jìn)行存儲(chǔ)和分發(fā),每個(gè)分區(qū)內(nèi)的消息是有序的,但不同分區(qū)之間的消息順序是無法保證的。如果消費(fèi)者在多個(gè)分區(qū)上進(jìn)行并行消費(fèi),并且不處理消息的順序,那么消費(fèi)順序可能會(huì)混亂。 消費(fèi)者并發(fā)度:當(dāng)

    2024年01月25日
    瀏覽(62)
  • Video標(biāo)簽添加跨域頭信息后的緩存問題

    第一步的頁面,這個(gè)頁面有兩個(gè) video標(biāo)簽,他們的 src一樣 為第video標(biāo)簽添加參數(shù) crossorigin=“anonymous” ,那么會(huì)報(bào)錯(cuò)?!皒xxx” has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. 這里的video.mp4的靜態(tài)文件服務(wù)器,服務(wù)端的代碼用 express寫的,

    2024年02月16日
    瀏覽(17)
  • Java ORM Bee 2.1.7 解決緩存雪崩問題,sql 格式化,配置 Sharding 執(zhí)行線程池大小

    Bee, 開發(fā) JavaWeb 數(shù)據(jù)庫應(yīng)用首選。既想得到 NoSQL 的性能,又想擁有關(guān)系型數(shù)據(jù)庫事務(wù)的能力,用 ORM Bee, 即可輕松解決. Java ORM Bee 不但支持?JDBC?類型的數(shù)據(jù)庫,還支持?Mongodb, 也支持?Android, 鴻蒙. Hibernate/MyBatis+ plus +Sharding JDBC + Jpa+ Spring data+ GraphQL+ App ORM (Android, 鴻蒙)=?Bee V2

    2024年02月13日
    瀏覽(21)
  • UE5中雙pass解決半透明材質(zhì)亂序問題

    UE5中雙pass解決半透明材質(zhì)亂序問題

    透明度材質(zhì)亂序問題一直是半透明效果時(shí)遇到的比較多的問題,用多pass方案只能說一定程度上解決,當(dāng)遇到多半透明物體穿插等情況時(shí),仍然不能完美解決。 雙pass方案Unity用的比較多,因?yàn)閁nity支持多個(gè)pass繪制。在UE中我們可以以復(fù)制多個(gè)物體賦予不同材質(zhì)球的方式模擬多

    2024年02月07日
    瀏覽(29)
  • 解決windows由于分辨率調(diào)整導(dǎo)致的桌面圖標(biāo)位置亂序

    解決windows由于分辨率調(diào)整導(dǎo)致的桌面圖標(biāo)位置亂序

    https://www.zhihu.com/question/328534753 https://baijiahao.baidu.com/s?id=1724804313296173730wfr=spiderfor=pc windows電腦由于連接(擴(kuò)展)外接顯示器、全屏游戲、遠(yuǎn)程桌面連接等會(huì)導(dǎo)致分辨率調(diào)整,從而導(dǎo)致桌面上排列好的圖片會(huì)變亂,這里有兩種方式解決: 通過修改注冊表項(xiàng)來解決 通過桌面圖標(biāo)

    2024年01月23日
    瀏覽(28)
  • 一道神奇的面試題---無序數(shù)組排序后的最大相鄰差

    一道神奇的面試題---無序數(shù)組排序后的最大相鄰差

    一:概述 這個(gè)算法的面試題目是:有一個(gè)無序整型數(shù)組,如何求出該數(shù)組排序后的任意兩個(gè)相鄰元素的最大差值?要求時(shí)間和空間復(fù)雜度盡可能低。 ? ? 二:具體說明 1第一種解法(初步解法) 這個(gè)解法的大致思路:使用任意一種時(shí)間復(fù)雜度為O(nlogn)的排序算法(如快速排序)給

    2024年04月28日
    瀏覽(14)
  • 解決Map序列化成JSON字符串傳給前端后屬性亂序問題

    map序列化成json對(duì)象傳遞給前端時(shí),map中屬性的順序會(huì)按首字母重新排序 json對(duì)象中的屬性沒有順序而言,一次序列化、反序列化就會(huì)亂。 試過把map轉(zhuǎn)成了JSON字符串,傳給前端,還是不行 想到數(shù)組可以保證順序,可以把后端的map轉(zhuǎn)成List數(shù)組,這樣序列化成json不會(huì)影響順序。

    2024年02月02日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包