Skip to content

Instantly share code, notes, and snippets.

@kipsong133
Last active February 27, 2024 04:51
Show Gist options
  • Save kipsong133/d811d7a9d6cd2693c4303a33441d4a08 to your computer and use it in GitHub Desktop.
Save kipsong133/d811d7a9d6cd2693c4303a33441d4a08 to your computer and use it in GitHub Desktop.
에제 3번
import 'dart:isolate';
import 'dart:math';

void main() async {
  Stopwatch stopwatch = Stopwatch()..start(); // 시간 측정 시작
  print('메인 Isolate에서 주식 데이터 처리 시작');
  ReceivePort receivePort = ReceivePort();
  // Isolate를 생성하고, 주식 데이터 처리 작업을 위임합니다.
  await Isolate.spawn(processStockData, receivePort.sendPort);
  // Isolate로부터 결과를 받습니다.
  receivePort.listen((processedData) {
    print('처리된 주식 데이터: $processedData');
    // 필요한 경우 여기서 UI 업데이트 등의 작업을 수행할 수 있습니다.
    print('주식 데이터 처리 시간: ${stopwatch.elapsed}'); // 시간 측정 종료 및 출력
    stopwatch.stop();
  });
}

// 주식 데이터를 가져오는 함수를 모방합니다.
List<double> fetchStockData() {
  final random = Random();
  return List.generate(365, (_) => random.nextDouble() * 100);
}

// Isolate에서 실행될 주식 데이터 처리 함수입니다.
void processStockData(SendPort sendPort) {
  List<double> stockData = fetchStockData();
  double averagePrice = stockData.reduce((a, b) => a + b) / stockData.length;
  sendPort.send(averagePrice);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment